Python 按连续行中的累积操作分组

Python 按连续行中的累积操作分组,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我想为df中的A中的相同值找到列B的滚动总和和滚动最大值 df = pd.DataFrame({'A': ['a', 'a', 'a', 'b', 'b', 'b', 'b'], 'B': [5, 2, 4, 7, 1, 11, 3]}) df_result = pd.DataFrame({'A': ['a', 'a', 'a', 'b', 'b', 'b', 'b'], 'B': [5, 2, 4, 7, 1, 11, 3], 'SUM': [5, 7, 11, 7, 8, 19, 22],

我想为
df中的
A
中的相同值找到列
B
的滚动总和和滚动最大值

df = pd.DataFrame({'A': ['a', 'a', 'a', 'b', 'b', 'b', 'b'], 'B': [5, 2, 4, 7, 1, 11, 3]})

df_result = pd.DataFrame({'A': ['a', 'a', 'a', 'b', 'b', 'b', 'b'], 'B': [5, 2, 4, 7, 1, 11, 3], 'SUM': [5, 7, 11, 7, 8, 19, 22], 'MAX': [5, 5, 5, 7, 7, 11, 11]})
与聚合依据和函数一起使用,最后为原始值:

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
如果可能,请修改原始数据帧

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