Pandas 回填并增加1?
我有一列由0和NaN组成的数据帧: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
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,这是一个很好的建议。更新,谢谢!