DataFrame:fillna(),其中包含有效值的运行总和

时间:2017-02-20 21:26:37

标签: python pandas dataframe

我正在使用Pandas Dataframe,如下所示:

0   Data
1   
2   
3   
4   5
5   
6   
7   
8   21
9   
10  2
11  
12  
13  
14  
15  

我试图通过以下有效值填充空白:df.fillna(method =' backfill')。这是有效的,但我需要将自上而下的有效值添加到下一个有效值,例如:

0   Data
1   28
2   28
3   28
4   28
5   23
6   23
7   23
8   23
9   2
10  2
11  
12  
13  
14  
15  

我可以通过循环来实现它,但是pandas中有一个方法可以做到这一点吗?

非常感谢!

2 个答案:

答案 0 :(得分:4)

您可以反转df,然后fillna(0)然后cumsum然后再反转:

In [12]:

df = df[::-1].fillna(0).cumsum()[::-1]
df
Out[12]:
    Data
0   28.0
1   28.0
2   28.0
3   28.0
4   23.0
5   23.0
6   23.0
7   23.0
8    2.0
9    2.0
10   0.0
11   0.0
12   0.0
13   0.0
14   0.0

这里我们使用切片符号来反转df,然后用NaN替换所有0,执行cumsum并反转

答案 1 :(得分:2)

另一种简单的方法:df.sum()-df.fillna(0).cumsum()