我有兩個不同大小的表,每個表大約有 15000 行,都在同一個 excel 表上并遵循相同的模板。

我需要將成本與相同的產品 ID、地區和國家/地區對齊,并洗掉重復的資訊,使其看起來像這樣。

我已經將檔案分成 2 個 pandas 資料幀并嘗試np.where對齊isin行,但這樣我只能使用一列來對齊它們,對于這種情況,我需要 3 個。有什么 pandas 方法可以做到這一點嗎?
uj5u.com熱心網友回復:
請試試這個(與其他答案非常相似,但使用過merge):
df1 = pd.DataFrame({'ProductID': [432, 653, 438,432, 567, 438,432],
'Region': ['SA', 'BR', 'EU', 'NA', 'BR', 'NA', 'SA'],
'Country': ['Columbia', 'Brazil', 'Spain', 'USA', 'Brazil', 'Canada', 'Chile'],
'Cost Wk1': [400, 4200, 290, 390, 800, 290, 425]})
df2 = pd.DataFrame({'ProductID': [438, 432, 432, 432, 653, 567, 438],
'Region': ['NA', 'NA', 'SA', 'SA', 'BR', 'BR', 'EU'],
'Country': ['Canada','USA','Columbia','Chile','Brazil', 'Brazil', 'Spain'],
'Cost Wk2': [300, 500, 410, 430, 4100, 820, 200]})
df3 = pd.merge(df1, df2, how = 'left', on = ['ProductID', 'Region', 'Country'])
print(df3)
ProductID Region Country Cost Wk1 Cost Wk2
0 432 SA Columbia 400 410
1 653 BR Brazil 4200 4100
2 438 EU Spain 290 200
3 432 NA USA 390 500
4 567 BR Brazil 800 820
5 438 NA Canada 290 300
6 432 SA Chile 425 430
uj5u.com熱心網友回復:
我相信這會滿足您的問題:
df1 = df1.join(df2.set_index(['Product ID', 'Region', 'Country']), on=['Product ID', 'Region', 'Country'])
輸入:
df1:
Product ID Region Country Cost Wk1
0 432 SA Colombia 400
1 653 BR Brazil 4200
2 438 EU Spain 290
3 432 NA USA 390
4 567 BR Brazil 800
5 438 NA Canada 290
6 432 SA Chile 425
df2:
Product ID Region Country Cost Wk2
0 438 NA Canada 300
1 432 NA USA 500
2 432 SA Colombia 410
3 432 SA Chile 430
4 653 BR Brazil 4100
5 567 BR Brazil 820
6 438 EU Spain 200
result:
Product ID Region Country Cost Wk1 Cost Wk2
0 432 SA Colombia 400 410
1 653 BR Brazil 4200 4100
2 438 EU Spain 290 200
3 432 NA USA 390 500
4 567 BR Brazil 800 820
5 438 NA Canada 290 300
6 432 SA Chile 425 430
請注意,我的結果與您問題中的結果不同(將 4200 和 800 交換為巴西),但我認為這是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/497253.html
