首页 > 解决方案 > 计算数据框行内的百分比份额

问题描述

我有一个数据框,其中包含分为多个部门的各个州的 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 

我试图得到如下的输出。

预期结果

标签: pythonpandasdataframe

解决方案


您可以尝试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')

推荐阅读