我想在[{1}}
中的B
中查找A
列的滚动总和和滚动最大值
df
答案 0 :(得分:3)
使用groupby
按agg
汇总,功能cummax
和cumsum
,最后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