熊猫:数据框累积,如果其他列为假,则重置

时间:2018-07-10 19:45:17

标签: pandas numpy dataframe cumsum

我有一个包含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 中所述遍历数据帧,则可以实现所需的结果,但是我正在寻找一种使用熊猫标准函数的矢量化方法

1 个答案:

答案 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