2017-02-20 26 views
3

我正在一個熊貓數據幀,看起來像這樣:數據框:fillna()與運行有效值之和

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

我試圖以填補未來有效值空白:DF。 fillna(方法= '回填')。這工作,但我需要將之前的有效值添加到下一個有效值,從下往上,如:

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 

我能得到這個通過遍歷它的工作,但有一個方法熊貓可以做到這一點?

非常感謝!

回答

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,然後更換所有NaN0,執行cumsum和反向

2

另一種簡單的方法:df.sum()-df.fillna(0).cumsum()

+0

很好的方法+1 – EdChum

相關問題