python-3.x - 通过比较 pandas 中的两个数据框来计算数据转换百分比
问题描述
我有一个输入数据框,它在不同的帐户中有一些固定的百分比。
df1:
Product AU-MGT AU-STG AU-PRD
prod1 20 60 70
prod2 80 40 30
另一个数据框是: df2:
Account Product cost
0 AU-MGT COMMON 4
1 AU-STG COMMON 6
2 AU-PRD COMMON 8
df2 仅气体一种产品-'COMMON'。我想根据百分比数据框在帐户和不同产品之间分配共同成本。我想要的输出是:
Account Product cost
0 AU-MGT prod-1 0.8
1 AU-MGT prod-2 3.2
2 AU-STG prod-1 3.6
3 AU-STG prod-2 2.4
4 AU-PRD prod-1 5.6
5 AU-PRD prod-2 2.4
如何使用熊猫实现这一目标?我尝试使用 df1 的 dataframe.unstack()。
解决方案
你需要先transpose
df1unstack
然后merge
用 df2 操作:
df1=pd.DataFrame({'prod':['prod1','prod2'],'AU-MGT':[20,80],'AU-STG':[60,40],'AU-PRD':[70,30]})
df2=pd.DataFrame({'Account':['AU-MGT','AU-STG','AU-PRD'],'Product':['COMMON','COMMON','COMMON'],'Cost':[4,6,8]})
df1=df1.set_index('prod').T.unstack().reset_index()
df1.columns=['prod','Account','Cost%']
df_new=df1.merge(df2,how='outer')
df_new['Cost_new']=df_new['Cost']*(df_new['Cost%']/100)
df_new=df_new[['Account','prod','Cost_new']]
Out[89]:
Account prod Cost_new
0 AU-MGT prod1 0.8
1 AU-MGT prod2 3.2
2 AU-STG prod1 3.6
3 AU-STG prod2 2.4
4 AU-PRD prod1 5.6
5 AU-PRD prod2 2.4
推荐阅读
- excel - 写入文本文件时出现错误的文件模式错误
- python - 使用 exec() 函数使字符串成为类的名称
- c# - 如何使用 Take 和 Skip 方法从数据库表中获取所有条目?
- angular - 使用 DomSanitizer 绕过 Angular 中的安全性时,如何安全地避免 Angular 中的 XSS 攻击?
- python - 如何读取 CSV 文件中的表情符号?
- swift - 使用 zpl (Zebra ZQ620) 打印时蓝牙连接经常断开
- git - 由于缺少正斜杠而导致 git 命令出现问题
- c# - ASP.NET:异步操作行为不异步
- sharepoint - 错误 - [tsc] 错误:找不到模块 '@microsoft/rush-stack-compiler-3.2' - 在 SharePoint 框架 Web 解决方案中运行 gulp serve 命令时
- python - 使用 os.rename 移动文件的问题