The*_*Guy 1 numpy dataframe pandas cumsum
我有一个包含2列的数据框,这里的目标很简单; 如果行列设置为False,则重置df.cumsum();
DF
value condition
0 1 1
1 2 1
2 3 1
3 4 0
4 5 1
Run Code Online (Sandbox Code Playgroud)
想要的结果如下:
DF
value condition
0 1 1
1 3 1
2 6 1
3 4 0
4 9 1
Run Code Online (Sandbox Code Playgroud)
如果我循环数据帧,如本文所述Python pandas cumsum()重置后达到最大值 我可以实现想要的结果,但我正在寻找一个更加矢量化的方式使用pandas标准函数
怎么样:
df['cSum'] = df.groupby((df.condition == 0).cumsum()).value.cumsum()
Run Code Online (Sandbox Code Playgroud)
输出:
value condition cSum
0 1 1 1
1 2 1 3
2 3 1 6
3 4 0 4
4 5 1 9
Run Code Online (Sandbox Code Playgroud)
您将连续的行组合在一起,直到0在condition列中遇到a ,然后cumsum分别在每个组中应用.