2017-06-15 11 views
1

最後の値をインクリメントすることによってはNaNを埋め戻す:パンダは、私は、データフレームを持って

  A B C 
Timestamp 
    1  NaN NaN NaN 
    2  NaN NaN NaN 
    3  NaN NaN 5 
    4  NaN NaN 4 
    5  NaN 3  3 
    6  NaN 2 NaN 
    7  3  1 NaN 
    8  2 NaN NaN 
    9  1 NaN NaN 
それは次のようになりますので、私は、各列の最後の可能な値をインクリメントすることにより、それを埋め戻すしたいと思い

  A B C 
Timestamp 
    1  9 7 7 
    2  8 6 6 
    3  7 5 5 
    4  6 4 4 
    5  5 3 3 
    6  4 2 NaN 
    7  3 1 NaN 
    8  2 NaN NaN 
    9  1 NaN NaN 

答えて

3

のは、これを試してみましょう:

df1 = df1[::-1].fillna(method='ffill') 
(df1 + (df1 == df1.shift()).cumsum()).sort_index() 

出力:

   A B C 
Timestamp    
1   9.0 7.0 7.0 
2   8.0 6.0 6.0 
3   7.0 5.0 5.0 
4   6.0 4.0 4.0 
5   5.0 3.0 3.0 
6   4.0 2.0 NaN 
7   3.0 1.0 NaN 
8   2.0 NaN NaN 
9   1.0 NaN NaN 
3

あなたはこれを試すことができます。

def bfill_increment(col): 
    col_null = col.isnull()[::-1] 
    groups = col_null.diff().fillna(0).cumsum() 
    return col_null.groupby(groups).cumsum()[::-1] + col.bfill() 

df.apply(bfill_increment) 

enter image description here

関連する問題