Панды Groupby Агрегат добавить сводные строки - PullRequest
0 голосов
/ 26 января 2019

Loving Pandas - и особенно групповая функция. В настоящее время он может сгруппировать необработанные данные и очень хорошо суммировать их, используя вложенные разбивки (например, Cat1, Cat, Brand согласно приведенному ниже)

Вопрос в том, что я хотел бы получить итоговые строки для каждого вложенного уровня, включая итоговую сумму, и не могу понять, как это сделать. Глядя на код везде - исчерпан поиском Google

import pandas as pd
import csv
salesdata = pd.read_csv("data/junk.csv")
dfa=salesdata.groupby(['cat1','cat2','brand']).aggregate({'gmv':    ['sum']})
dfa.to_excel('junk_summary.xlsx', sheet_name='summary')

Извините - попытался показать на этом экране выходной формат, не могу заставить его работать, поэтому сделал изображения

Токовый выход Желаемый выход

1 Ответ

0 голосов
/ 26 января 2019

Один из способов сделать это -

  1. рассчитать таблицу сумм (table1) для groupby ([cat1, cat2]) и назвать столбец суммы «gmv»
  2. вычислите другую таблицу сумм (table2) для groupby ([cat1]) и снова назовите столбец суммы «gmv»
  3. Внешнее объединение вашей таблицы с таблицей1 на [cat1, cat2, gmv] -> table3
  4. Внешнее слияние table3 с table2 на [cat1, gmv]

Это не совсем похоже на то, что вы хотите, но должно быть довольно близко. Если в результате слияния есть значения NA, вы можете выполнить df.fillna («»).

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