[英]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.