Pandas 回填并增加1?

Pandas 回填并增加1?,pandas,numpy,Pandas,Numpy,我有一列由0和NaN组成的数据帧: Timestamp A B C 1 3 3 NaN 2 5 2 NaN 3 9 1 NaN 4 2 6 NaN 5 3 3 0 6 5 2 NaN 7 3 1 NaN 8 2

我有一列由0和NaN组成的数据帧:


Timestamp   A     B     C
    1       3     3    NaN
    2       5     2    NaN
    3       9     1    NaN 
    4       2     6    NaN 
    5       3     3     0
    6       5     2    NaN
    7       3     1    NaN
    8       2     8    NaN
    9       1     6     0
我想回填它并增加最后一个值:


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

您可以使用
iloc[:-1]
反转数据,并使用
groupby().cumcount()
创建行计数器:

s = df['C'].iloc[::-1].notnull()
df['C'] = df['C'].bfill() + s.groupby(s.cumsum()).cumcount()
输出

   Timestamp  A  B    C
0          1  3  3  4.0
1          2  5  2  3.0
2          3  9  1  2.0
3          4  2  6  1.0
4          5  3  3  0.0
5          6  5  2  3.0
6          7  3  1  2.0
7          8  2  8  1.0
8          9  1  6  0.0

也许只是
df['C'][:-1].notnull()
这样你就不必反转整个df了?@HenryYik yep,这是一个很好的建议。更新,谢谢!