Рассчитать процентную долю в строках данных - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть фрейм данных с данными о ВВП разных штатов, разделенными на несколько секторов. Я пытаюсь получить процентный вклад первичного, вторичного и третичного секторов в процентах от общего ВВП для всех штатов. Ниже приводится датафрейм, и я не уверен, как я могу подойти к этому. DataFrame

Ниже приведены результаты, которых я пытаюсь достичь:

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 

Я пытаюсь получить вывод, как показано ниже.

Expected Result

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы можете попробовать 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')
0 голосов
/ 25 апреля 2019

Решение будет поворачиваться на столбец 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

и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...