Pandas:数据帧累积和,如果其他列为假则重置[重复]

2024-05-12

我有一个包含 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() 在达到最大值后重置 https://stackoverflow.com/questions/27132757/python-pandas-cumsum-reset-after-hitting-max我可以实现想要的结果,但我正在寻找一种使用 pandas 标准函数的更加矢量化的方式


怎么样:

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

Output:

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

您将把连续的行分组在一起,直到遇到0 in the condition列,然后应用cumsum每个组内分别进行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas:数据帧累积和,如果其他列为假则重置[重复] 的相关文章

随机推荐