我有一个包含 0 和 1 的矩阵,并且想要在每列上做一个 cumsum,只要观察到零,它就会重置为 0。例如,如果我们有以下内容:
df = pd.DataFrame([[0,1],[1,1],[0,1],[1,0],[1,1],[0,1]],columns = ['a','b'])
print(df)
a b
0 0 1
1 1 1
2 0 1
3 1 0
4 1 1
5 0 1
Run Code Online (Sandbox Code Playgroud)
我想要的结果是:
print(df)
a b
0 0 1
1 1 2
2 0 3
3 1 0
4 2 1
5 0 2
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试时df.cumsum() * df,我能够正确识别 0 元素,但计数器不会重置:
print(df.cumsum() * df)
a b
0 0 1
1 1 2
2 0 3
3 2 0
4 …Run Code Online (Sandbox Code Playgroud)