2017-02-20 6 views
3

有効な値の合計を実行しているとは:DF:データフレーム:fillna()私はこのようになりますパンダのデータフレームを、働いている

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

私がすることによって、次の有効な値を持つ空白を埋めるためにしようとしています。 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

あなたはfillna(0)そして、DFを逆にして、cumsumと再び逆転できる:私たちは、DFを逆転、その後0ですべてNaNを置き換え、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 

2

もう1つの簡単な方法:df.sum()-df.fillna(0).cumsum()

+0

非常に良い方法+1 – EdChum

関連する問題