为了账号安全,请及时绑定邮箱和手机立即绑定

pandas Dataframes 将列名与列值合并

pandas Dataframes 将列名与列值合并

一只甜甜圈 2021-11-16 17:06:37
我有 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


查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信