我有一个包含2列的数据框,这里的目标很简单;如果将行列设置为False,则重置df.cumsum();
df
value condition
0 1 1
1 2 1
2 3 1
3 4 0
4 5 1
所需结果如下:
df
value condition
0 1 1
1 3 1
2 6 1
3 4 0
4 9 1
如果我按照这篇帖子Python pandas cumsum() reset after hitting max 中所述遍历数据帧,则可以实现所需的结果,但是我正在寻找一种使用熊猫标准函数的矢量化方法
答案 0 :(得分:5)
怎么样:
df['cSum'] = df.groupby((df.condition == 0).cumsum()).value.cumsum()
输出:
value condition cSum
0 1 1 1
1 2 1 3
2 3 1 6
3 4 0 4
4 5 1 9
将连续的行分组在一起,直到在0
列中遇到condition
,然后在每个组中分别应用cumsum
。