加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Pandas Dataframes将列名称与列值合并

发布时间:2020-12-17 17:38:13 所属栏目:Python 来源:网络整理
导读:我有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'

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读