连续行pandas中的Groupby累积操作

时间:2017-10-19 06:31:48

标签: python pandas pandas-groupby

我想在[{1}}

中的B中查找A列的滚动总和和滚动最大值
df

1 个答案:

答案 0 :(得分:3)

使用groupbyagg汇总,功能cummaxcumsum,最后join为原始汇总:

d = {'cummax':'max', 'cumsum':'sum'}
df_result = df.join(df.groupby('A')['B'].agg(['cummax','cumsum']).rename(columns=d))
print (df_result)
   A   B  max  sum
0  a   5    5    5
1  a   2    5    7
2  a   4    5   11
3  b   7    7    7
4  b   1    7    8
5  b  11   11   19
6  b   3   11   22

如果可以修改原始DataFrame

df[['max','sum']] = df.groupby('A')['B'].agg(['cummax','cumsum'])
print (df)
   A   B  max  sum
0  a   5    5    5
1  a   2    5    7
2  a   4    5   11
3  b   7    7    7
4  b   1    7    8
5  b  11   11   19
6  b   3   11   22