在多列中加入数据框,且容忍一列?

时间:2019-06-27 15:18:45

标签: pandas

您好,将两个数据框在多列上连接在一起的有效方法是什么,除了选择的数字(在这种情况下为一个)之外的所有数字都不完全匹配?

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

1 个答案:

答案 0 :(得分:1)

merge_asoftolerance一起使用

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