【问题标题】:How to compare two data frames with same columns but different number of rows?如何比较具有相同列但行数不同的两个数据框?
【发布时间】:2019-08-17 15:10:27
【问题描述】:

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']

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

结果DF=

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

【问题讨论】:

  • 谢谢,这会打印“D”列中的差异。但是它不会像中那样逐行比较。如果 df1 和 df2 中的 A、B、C 中的第一行相同,那么然后才比较 D。

标签: python pandas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2020-02-02
    • 2022-01-27
    相关资源
    最近更新 更多