Вы можете попробовать 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')