关于 numpy:Pandas :数据帧 cumsum ,如果其他列为假则重置

Pandas : dataframe cumsum , reset if other column is false

本问题已经有最佳答案,请猛点这里访问。

我有一个包含 2 列的数据框,这里的目标很简单;如果行列设置为 False,则重置 df.cumsum();

df

1
2
3
4
5
6
      value      condition
0       1            1
1       2            1
2       3            1
3       4            0
4       5            1

想要的结果如下:

df

1
2
3
4
5
6
      value      condition
0       1            1
1       3            1
2       6            1
3       4            0
4       9            1

如果我按照本文所述循环数据帧 Python pandas cumsum() reset after hit max
我可以达到想要的结果,但我正在寻找一种使用 pandas 标准函数的更加矢量化的方式


怎么样:

1
df['cSum'] = df.groupby((df.condition == 0).cumsum()).value.cumsum()

输出:

1
2
3
4
5
6
   value  condition  cSum
0      1          1     1
1      2          1     3
2      3          1     6
3      4          0     4
4      5          1     9

您会将连续的行组合在一起,直到在 condition 列中遇到 0,然后在每个组中分别应用 cumsum