我有一个数据框,其中包含多个州的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
我正在尝试获取如下输出。
答案 0 :(得分:1)
您可以尝试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')
答案 1 :(得分:0)
解决方案将以state
列为中心,然后您将获得所有信息来计算百分比。
df_pivot = df.pivot(index='state', columns='item', values='GSDP')
现在,您可以轻松计算出百分比:
df_pivot['PrimaryPercent'] = df_pivot.Primary / df_pivot['Gross State Domestic Product'] * 100
df_pivot['SecondaryPercent'] = df_pivot.Secondary / df_pivot['Gross State Domestic Product'] * 100
等