2017-06-15 40 views
1

我有一個數據幀:大熊貓回填楠遞增的最後一個值

  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