2016-09-15 50 views
2

我想在pandaspython的数据框中应用cumsum,但没有零。简单地说,我想离开零并在数据帧上执行cumsum。假设我有数据帧是这样的:Python pandas nonzero 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 

和结果是前人的精力

a b c 
0 1 2 0 
1 3 7 1 
2 0 0 3 
3 4 0 8 

任何想法如何做到这一点,避免循环?在Rave功能,但林非常新python,我不知道。

回答

5

可以掩盖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 
+0

太简单了,看看它THX了很多,下一次生病尝试更难弄明白。 – Bobesh

+0

如果我的答案解决了你的问题,那么你应该接受它,所以这个问题不会没有答案,谢谢 – EdChum