Итого по группам pandas - PullRequest
2 голосов
/ 09 июля 2020

Допустим, у меня есть фрейм данных, который выглядит следующим образом:

Input

item_code    qty

 10034        5
              4
              3

 10035        2
              1

Я хотел бы добавить новое имя столбца total после столбца qty и указать общую сумму количество согласно столбцу item_code.

вывод

    item_code    qty   total

     10034        5      12
                  4
                  3

     10035        2       3
                  1

1 Ответ

0 голосов
/ 09 июля 2020

Использовать, если item_code - столбец:

df['total'] = df.groupby(df['item_code'].replace('',np.nan).ffill())['qty'].transform('sum')

Использовать, если item_code - уровень MultiIndex:

df['total'] = df.groupby(level=0)['qty'].transform('sum')

При необходимости удалить повторяющиеся значения (заменить на пустое строка) возможно, но получаются смешанные значения - строки с числами, поэтому следующая обработка должна быть проблемной c:

df['total'] = df['total'].mask(df.index.get_level_values('item_code').duplicated(), '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...