我有 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
提交
取消