python - 计算数据框行内的百分比份额
问题描述
我有一个数据框,其中包含分为多个部门的各个州的 GDP 数据。我试图获得所有州的第一、第二和第三部门占 GDP 总量的百分比。下面是数据框,我不确定如何解决这个问题。
以下是我试图达到的结果:
Primary % Contribution = (Primary for that state/ State GSDP )* 100
Secondary % Contribution = (Secondary for that state/ State GSDP )* 100
Tertiary % Contribution = (Tertiary for that state/ State GSDP )* 100
我试图得到如下的输出。
解决方案
您可以尝试pivot
数据框:
new_df = df.pivot(index='State',columns='Item', values='GSDP')
for item in ['Primary', 'Secondary']:
new_df[item+'_pct'] = new_df[item]/new_df['Gross State']
new_df['Tertiary_pct'] = 1 - new_df[['Primary_pct', 'Secondary_pct']].sum(1)
注意:pivot
仅当每对有一行时才有效(state, item)
。否则,请考虑pivot_table
:
new_df = df.pivot_table(index='State',columns='Item', values='GSDP', aggfunc='sum')
推荐阅读
- typescript - 使用接口定义交集,而不是类型
- php - 在base64中裁剪图像边距
- macos - ddev 无法启动或重新启动,并出现“docker Read timed out”
- c# - 在 C# 中使用 PSCommand.AddCommand() 而不是 PSCommand.AddScript() 运行 PowerShell
- python - 给定多个预测向量,如何有效地获得票数最多的标签(在 numpy/pytorch 中)?
- r - R中的累计和
- pyomo - 我有一个函数有问题,根据向量上的值向求解器发送正确的方程
- java - 遍历数组检查数组是否包含两个数字
- c# - Impinj Octane Sdk ENABLE_IMPINJ_EXTENSIONS:M_UnsupportedMessage
- python - 从 xyz 文件中计算不同分子的数量