如何比较具有相同列但行数不同的两个数据帧?

时间:2019-08-12 23:52:30

标签: python pandas

  

df1 =

  A   B  C  D

  a1  b1 c1 1

  a2  b2 c2 2

  a3  b3 c3 4
  

df2 =

  A   B  C  D

  a1  b1 c1 2

  a2  b2 c2 1

我想比较两个数据帧中列“ D”的值。如果两个数据框的行数相同,我将这样做。

  

newDF = df1 ['D']-df2 ['D']

但是,有时行数不同。我想要一个显示这样的数据框的结果数据框。

  

resultDF =

  A   B  C  D_df1 D_df2  Diff

  a1  b1 c1  1     2       -1

  a2  b2 c2  2     1        1

编辑:如果df1和df2中A,B,C中的第一行相同,则仅对每个数据帧比较D列的第一行。同样,对所有行重复此操作。

1 个答案:

答案 0 :(得分:3)

使用mergedf.eval

df1.merge(df2, on=['A','B','C'], suffixes=['_df1','_df2']).eval('Diff=D_df1 - D_df2')

Out[314]:
    A   B   C  D_df1  D_df2  Diff
0  a1  b1  c1      1      2    -1
1  a2  b2  c2      2      1     1