pandas 比较两个具有多个键条目的 Dataframe 的最佳方法是什么?

rvpgvaaj  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(175)

我有两个 Dataframe 。对于同一个产品ID,它们可以有多个值。比较它们的值的最佳方法是什么?我尝试过使用csv_diff库中的compare对它们进行比较,但它是基于唯一键的。但是,我的 Dataframe 没有唯一键,对于同一个product_name有多个条目。

diff = compare(
    load_csv(open("df1.csv"), key="product_name"),
    load_csv(open("df2.csv"), key="product_name")
)

Dataframe 如下所示:

df1:
product name    value   value2  value3  value4  value5  value6  value7  ...
0   1234PROD    1       2       3       4       5       6       7       ...
1   1234PROD    7       4       4       7       8       7       8       ...
2   1234PROD    8       7       4       7       8       7       8       ...

df2:
product name    value   value2  value3  value4  value5  value6  value7  ...
0   4567PROD    1       2       3       4       5       6       9       ...
1   8767PROD    7       4       4       7       8       7       8       ...
2   1234PROD    5       7       4       7       8       7       8       ...
3   1234PROD    8       7       4       7       8       7       8       ...

我希望获得其更改的摘要,类似于:

changes:
 [{'key': '1234PROD',
   'changes': {'value': [1, 5],
    'value1': [2,7],
    'value2': [3,4]
}]
slmsl1lt

slmsl1lt1#

我不确定您的预期输出应该是什么,但您可以尝试以下操作:

df1.apply(lambda row: row == df2[df2.product_name == row.product_name], axis=1)

结果是一个对象,其中每行都包含与产品名称对应的所有行。您可以按行搜索该结果:

result[2]:
index   product_name    value   value2  value3  value4  value5  value6  value7
2       True            False   True    True    True    True    True    True
3       True            True    True    True    True    True    True    True

相关问题