Pandas Dataframes将列名称与列值合并

Pandas Dataframes将列名称与列值合并,第1张

概述我有2个数据框df = pd.DataFrame({'Location': [ 'Hawai', 'Torino', 'Paris'], 'Time': [2000, 2001,2002], 'Value': [1.2, 2.2,3.4] })

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

它产生这个:

               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  

我被困在这里,谢谢您的帮助最佳答案用unstack然后mul做

df2.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
总结

以上是内存溢出为你收集整理的Pandas Dataframes将列名称与列值合并 全部内容,希望文章能够帮你解决Pandas Dataframes将列名称与列值合并 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存