我有两个 pandas 数据框,第一个数据框有两列,假定为键和值,第二个数据框仅包含键,我想在第二个数据框中添加一个新列,该列的值应该是匹配第一个数据帧中的键
df = pd.DataFrame({'vi' : ['a','b','c','d','e'],'s':[2,5,7,0,1]})
tf = pd.DataFrame({'vi' : ['b','d','c','a','e']})
df
vi s
a 2
b 5
c 7
d 0
e 1
tf
vi
b
d
c
a
e
result tf
vi s
b 5
d 0
c 7
a 2
e 1
Run Code Online (Sandbox Code Playgroud)
合并时,您需要指定以确保新数据框中包含left所有值。tf由于两个数据框的键列名称相同,因此指定on='vi'。
df = pd.DataFrame({'vi': ['a', 'b', 'c', 'd', 'e', 'z'],
's': [2, 5, 7, 0, 1, 10]})
tf = pd.DataFrame({'vi': ['b', 'd', 'c', 'a', 'e', 'f']})
>>> tf.merge(df, how='left', on='vi')
vi s
0 b 5
1 d 0
2 c 7
3 a 2
4 e 1
5 f NaN
Run Code Online (Sandbox Code Playgroud)
我已将两个数据集扩展了一个非唯一值。请注意上面的结果与简单合并的不同之处,简单合并默认情况下执行内部联接。
>>> tf.merge(df)
vi s
0 b 5
1 d 0
2 c 7
3 a 2
4 e 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6257 次 |
| 最近记录: |