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列的第一行。同样,对所有行重复此操作。

最佳答案

使用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

关于python - 如何比较具有相同列但行数不同的两个数据帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57469558/

10-12 18:16
查看更多