我有2个不同长度的数据帧。每个都有3个id列,我想只在所有id列相同时才将值从第二个数据帧传输到第一个数据帧。例如,值'bb'将添加到第3行df1中的新列。我该怎么办?
df1 = pd.DataFrame({'id1' : [1, 2, 'aa', 4, 5], 'id2': ['a', 'a', 'aa', 'd','e'], 'id3': ['p', 'r', 'aa', 'i', 't']})
df2 = pd.DataFrame({'id1': [ 6, 7, 6, 5, 4, 1, 'aa' ], 'id2':['f','d','c','f','b','z','aa'], 'id3':['a', 'f', 'q', 'b', 't', 't','aa'], \
'value' : [5, 4,7,6, 8, 5 , 'bb']})
id1 id2 id3
0 1 a p
1 2 a r
2 aa aa aa
3 4 d i
4 5 e t
[5 rows x 3 columns]
id1 id2 id3 value
0 6 f a 5
1 7 d f 4
2 6 c q 7
3 5 f b 6
4 4 b t 8
5 1 z t 5
6 aa aa aa bb
答案 0 :(得分:0)
您只需执行左侧样式merge
:
In [116]:
df1.merge(df2, how='left')
Out[116]:
id1 id2 id3 value
0 1 a p NaN
1 2 a r NaN
2 aa aa aa bb
3 4 d i NaN
4 5 e t NaN