使用Pandas比较两个数据框的列值

时间:2020-05-30 22:32:27

标签: python pandas dataframe

我是python的新手,所以请放轻松。我一直在寻找类似的线程,但无法为我的问题找到整洁的解决方案:

我想比较两个数据框的列值,并将这些值放在新数据框中的不同位置 我的数据框位于下方,并且长度不同(即行数)。我想比较每个SKU的状态:

df1

SKU PRICE   Status
A   1798    0
C   1798    1
D   999     0
E   1299    1
F   999     0


df2

SKU PRICE   Status
A   1798    1
B   2997    1
C   1798    1
D   999     0

比较df2和df1我要跟随df3

SKU PRICE Status
A   1798  0   

我知道可以通过循环来完成,但是我希望通过pandas或itertools有更好的解决方案吗?

感谢您的帮助

df1: enter image description here

df2: enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个简单的合并和过滤操作:

df1.merge(df2, on=['SKU', 'PRICE']).query('Status_x != Status_y')

  SKU  PRICE  Status_x  Status_y
0   A   1798         0         1

或更准确地说:

(df1.merge(df2, on=['SKU', 'PRICE'], suffixes=('', '_y'))
    .query('Status != Status_y')
    .drop('Status_y', 1))

  SKU  PRICE  Status
0   A   1798       0