Python pandas nonzero cumsum

Bob*_*esh 3 python pandas

我想cumsum在in pandas中应用数据帧python,但是没有零.我只想留下零并cumsum在数据帧上做.假设我有这样的数据帧:

import pandas as pd

df =  pd.DataFrame({'a' : [1,2,0,1], 
                    'b' : [2,5,0,0], 
                    'c' : [0,1,2,5]})

   a  b  c
0  1  2  0
1  2  5  1
2  0  0  2
3  1  0  5
Run Code Online (Sandbox Code Playgroud)

结果应该是

   a  b  c
0  1  2  0
1  3  7  1
2  0  0  3
3  4  0  8
Run Code Online (Sandbox Code Playgroud)

任何想法如何避免循环?在Rave功能的,但是我很新的python,我不知道.

EdC*_*ica 6

您可以屏蔽df,以便只覆盖非零单元格:

In [173]:
df[df!=0] = df.cumsum()
df

Out[173]:
   a  b  c
0  1  2  0
1  3  7  1
2  0  0  3
3  4  0  8
Run Code Online (Sandbox Code Playgroud)