pandas Dataframes 将列名与列值合并

我有 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)  

它产生这个:


               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  

我被困在这里,谢谢你的帮助


一只甜甜圈
浏览 210回答 1
1回答

Helenr

unstack然后做muldf2.columns=df2.columns.astype(int)s=df.Value.unstack(fill_value=1)df2.mul(s)Out[675]:                         2000  2001   2002Country Unit Location                    US      USD  Hawai     799.2   NaN   44.0IT      EUR  Torino    888.0   NaN   55.0FR      EUR  Paris     777.0   NaN  224.4根据下面的评论df2.mul(df.Value.reset_index('Location',drop=True))Out[683]:                          2000  2001   2002Country Unit Location                     US      USD  Hawai      799.2   NaN  149.6IT      EUR  Torino    1065.6   NaN  187.0FR      EUR  Paris      932.4   NaN  224.4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python