我有 2 個數據框df = pd.DataFrame({'Location': [ 'Hawai', 'Torino', 'Paris'], 'Time': [2000, 2001,2002], 'Value': [1.2, 2.2,3.4] })df.set_index(['Location','Time'],inplace=True)df2 = pd.DataFrame({'Country': [ 'US', 'IT', 'FR'], 'Unit': [ 'USD', 'EUR', 'EUR'], 'Location': [ 'Hawai', 'Torino', 'Paris'], '2000': [666, 888,777], '2002': [44,55,66] })df2.set_index(['Country','Unit','Location'],inplace=True) 它產生這個: ValueLocation Time Hawai 2000 1.2Torino 2001 2.2Paris 2002 3.4 2000 2002Country Unit Location US USD Hawai 666 44IT EUR Torino 888 55FR EUR Paris 777 66 我需要合并它們,例如對于每個國家/單位/位置,每一列都乘以第一個數據幀中的相應值(給定位置和時間)所以結果應該是這樣的 2000 2002Country Unit Location US USD Hawai 799.2 149.6IT EUR Torino 1065.6 187FR EUR Paris 932.4 224.4 我被困在這里,謝謝你的幫助
1 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
unstack然后做mul
df2.columns=df2.columns.astype(int)
s=df.Value.unstack(fill_value=1)
df2.mul(s)
Out[675]:
2000 2001 2002
Country Unit Location
US USD Hawai 799.2 NaN 44.0
IT EUR Torino 888.0 NaN 55.0
FR EUR Paris 777.0 NaN 224.4
根據下面的評論
df2.mul(df.Value.reset_index('Location',drop=True))
Out[683]:
2000 2001 2002
Country Unit Location
US USD Hawai 799.2 NaN 149.6
IT EUR Torino 1065.6 NaN 187.0
FR EUR Paris 932.4 NaN 224.4
添加回答
舉報
0/150
提交
取消