Как получить процентный вклад для каждой группы в dF с MultiIndex в pandas? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть df, как показано ниже:

year и Continent являются индексами. hydro_total - это столбец.

df info

Я хочу добавить столбец, в котором будет указан процент взноса континента за данный год.

Например: за 1971 год вклад Африки составил 2,04, а Америки - 48,56, аналогично для Азии, Европы и Океании. Это будет повторяться для каждого года.

Вот данные:

{'hydro_total': {(1971, 'Africa'): 1861980.0,
  (1971, 'America'): 44127920.0,
  (1971, 'Asia'): 14514450.0,
  (1971, 'Europe'): 28232850.0,
  (1971, 'Oceania'): 2126000.0,
  (1972, 'Africa'): 2300750.0,
  (1972, 'America'): 47242190.0,
  (1972, 'Asia'): 14970150.0,
  (1972, 'Europe'): 29427610.0,
  (1972, 'Oceania'): 2225000.0}}

1 Ответ

1 голос
/ 10 апреля 2020

Если я вас правильно понимаю:

df['contribution'] = df.groupby(level=0)['hydro_total'] \
                       .transform(lambda g: g / g.sum()) * 100

Результат:

              hydro_total  contribution
1971 Africa     1861980.0      2.049212
     America   44127920.0     48.565228
     Asia      14514450.0     15.973959
     Europe    28232850.0     31.071820
     Oceania    2126000.0      2.339781
1972 Africa     2300750.0      2.392485
     America   47242190.0     49.125821
     Asia      14970150.0     15.567037
     Europe    29427610.0     30.600942
     Oceania    2225000.0      2.313715
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...