Предположим, у меня есть кадр данных следующим образом:
df = pd.DataFrame(np.array([[2018,'R1','C1',1],[2018,'R1','C2',2],[2018,'R1','C3',3],[2018,'R1','C4',4],[2018,'R1','C5',5],[2018,'R2','C6',6],[2018,'R2','C7',7],[2018,'R2','C8',8],[2018,'R2','C9',9],[2018,'R2','C10',10]]),columns=['Year', 'Region', 'Country', 'Spend'])
Я хотел бы добавить итоговые строки к каждому возможному group by
(groups
), чтобы выходной кадр данных выглядел примерно так:
Я узнал, как добавить итоговые / итоговые строки в виде столбца на основе этого сообщения StackOverflow . Но я хотел бы, чтобы эти итоговые строки были объединены с исходным фреймом данных, как показано на скриншоте выше, и я хотел бы сделать это как можно меньше строк (то есть, чтобы не вызывать разные комбинации groupby
вручную, как показано ниже). ):
df['ByYearTotalCount'] = df.groupby(['Year'])['Spend'].transform('sum')
df['ByYearByRegionTotalCount'] = df.groupby(['Year','Region'])['Spend'].transform('sum')
Может ли кто-нибудь помочь мне придумать лучший pandas
-подобный способ сделать это? Заранее благодарю за помощь!