当列A中存在匹配时,计算列B中的差异

时间:2018-03-09 17:38:12

标签: python pandas

我会根据A列中的字符串匹配在DF 1和DF 2之间的B列中的差异。数据帧有数百行,可能没有按顺序排列。他们看起来像这样:

df1

     A    B
0  a,b  2.0
1  d,c  1.4
2  a,c  1.8
3  c,d  5.4
4  m,m  2.0

df2

     A    B
0  c,d  2.1
1  a,b  2.2
2  k,k  3.0
3  a,d  2.0
4  m,m  1.2

并且所需的输出将基于DF 1并且如果没有匹配则返回NaN。它看起来像是:

            DF Result                         
    __|  A   |   B   |             
    0 |'a,b' | -0.2  |             
    1 |'d,c' |  NaN  |             
    2 |'a,c' |  NaN  |              
    3 |'c,d' |  3.3  |             
    4 |'m,m' |  0.8  |       

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

执行索引对齐减法。

(df1.set_index('A').B - df2.set_index('A').reindex(df1.A).B).reset_index()

     A    B
0  a,b -0.2
1  d,c  NaN
2  a,c  NaN
3  c,d  3.3
4  m,m  0.8