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