pandas数据框将列名称与列值合并

时间:2019-02-22 19:33:29

标签: python pandas dataframe

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

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

1 个答案:

答案 0 :(得分:2)

先做setOnMouseEntered然后做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