繁体   English   中英

将两个数据帧与一个键的多个条目进行比较的最佳方法是什么?

[英]What is the best way to compare two dataframes with multiple entries for a key?

我有两个数据框。 对于同一个产品 ID,它们可以有多个值。 比较它们的值的最佳方法是什么? 我尝试将它们与来自 csv_diff 库的比较进行比较,但它基于唯一键。 但是,我的数据框没有唯一键,同一 product_name 有多个条目。

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

数据框如下所示:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM