[英]Find Difference between 2 dataframes
我是熊貓的新手,有一個問題。 我有 2 個數據框:
df1 = pd.DataFrame({'ID': ['ID1', 'ID2', 'ID3', 'ID6'],
'Value': ['59', '29', '73', '34']})
df2 = pd.DataFrame({'ID': ['ID1', 'ID2', 'ID4'],
'Value': ['54', '29', '73']})
我想獲得一個輸出數據框,其中列出了 df1 和 df2(如 ID3、ID4 和 ID6)中更改的值 (ID1) 和各個 ID
非常感謝!
做外部合並並計算差異:
out=df1.merge(df2,on='ID',how='outer')
out['Difference']=out.pop('Value_x').astype(float)-out.pop('Value_y').astype(float)
out
輸出:
ID Difference
0 ID1 5.0
1 ID2 0.0
2 ID3 NaN
3 ID6 NaN
4 ID4 NaN
或者
合並后使用 0 填充 NaN:
out=df1.merge(df2,on='ID',how='outer').fillna(0)
out['Difference']=out.pop('Value_x').astype(float)-out.pop('Value_y').astype(float)
out
輸出:
ID Difference
0 ID1 5.0
1 ID2 0.0
2 ID3 73.0
3 ID6 34.0
4 ID4 -73.0
changed = set()
individual = (set(df1['ID'].to_numpy()) - set(df2['ID'].to_numpy())).union(set(df2['ID'].to_numpy()) - set(df1['ID'].to_numpy()))
for i in set(df1['ID'].to_numpy()) - (set(df1['ID'].to_numpy()) - set(df2['ID'].to_numpy())):
if not df1[df1['ID'] == i]['Value'].equals(df2[df2['ID'] == i]['Value']):
changed.add(i)
print(changed, individual)
>>> {'ID1'} {'ID6', 'ID3', 'ID4'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.