簡體   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