Как получить сумму групп внутри других групп с помощью панд GroupBy? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть этот мультииндексированный фрейм данных:

- metric_1 cat_A date cat_B foo 2019-03-18 blue 1 yellow 2 red 3 2019-03-19 blue 5 red 10 green 5 bar 2019-03-18 yellow 2 black 2 red 2 2019-03-19 red 1 blue 8 black 1

Я хочу создать metric_2, который принимает metric_1 один и делит на общую сумму metric_1 для всехcat_B в течение определенной даты И в пределах соответствующей cat_A.

Пример вывода:

- metric_1 metric_2 cat_A date cat_B<br> foo 2019-03-18 blue 1 0.166 yellow 2 0.333 red 3 0.500 2019-03-19 blue 5 0.250 red 10 0.500 green 5 0.250 bar 2019-03-18 yellow 2 0.333 black 2 0.333 red 2 0.333 2019-03-19 red 1 0.100 blue 8 0.800 black 1 0.100

Я пытаюсь суммировать уровни, используя sum(level = 0), sum(level = 1) и т. Д., Но требуется толькосумма всего уровня, и я думаю, что я что-то упустил.

Заранее спасибо!

1 Ответ

2 голосов
/ 03 апреля 2019

Использование reindex

df['New']=df['metric_1']/df['metric_1'].sum(level=[0,1],axis=0).reindex(df.index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...