您好,将两个数据框在多列上连接在一起的有效方法是什么,除了选择的数字(在这种情况下为一个)之外的所有数字都不完全匹配?
edit:根据Ben的建议,['A','B','D']为df1和df2组成唯一的ID,并且在df1上的连接应该是唯一的,并且df1.shape!= df2.shape
即:
df1
A B C D
1 Apple 21 10 a
2 Pear 90 12 a
3 Apple 31 11 b
4 Apple 71 14 c
5 Apple 45 15 d
6 Pear 14 13 b
df2
A B E D
1 Apple 22 50 a
2 Pear 89 46 a
3 Apple 30 56 b
4 Apple 72 60 c
加入['A','B','D',],其中B是公差为+/-1。结果
A B C D E
1 Apple 21 10 a 50
2 Pear 90 12 a 46
3 Apple 31 11 b 56
4 Apple 71 14 c 60
5 Apple 45 15 d NaN
6 Pear 14 13 b NaN
答案 0 :(得分:1)
将merge_asof
与tolerance
一起使用
pd.merge_asof(df1.sort_values('B'),df2.sort_values('B'),by=['A','D'],on='B',tolerance=1,direction='nearest')
Out[306]:
A B C D E
0 Pear 14 13 b NaN
1 Apple 21 10 a 50.0
2 Apple 31 11 b 56.0
3 Apple 45 15 d NaN
4 Apple 71 14 c 60.0
5 Pear 90 12 a 46.0