|
我有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','2000': [666,888,777],'2002': [44,55,66]
})
df2.set_index(['Country','Unit','Location'],inplace=True)
它产生这个:
Value
Location Time
Hawai 2000 1.2
Torino 2001 2.2
Paris 2002 3.4
2000 2002
Country Unit Location
US USD Hawai 666 44
IT EUR Torino 888 55
FR EUR Paris 777 66
我需要合并它们,例如对于每个国家/地区/位置,每列都乘以第一个数据帧中的相应值(给定位置和时间) 所以结果应该像
2000 2002
Country Unit Location
US USD Hawai 799.2 149.6
IT EUR Torino 1065.6 187
FR EUR Paris 932.4 224.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
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|