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