我有一个包含 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(使用前将#替换为@)