我正在使用Pandas Dataframe,如下所示:
0 Data
1
2
3
4 5
5
6
7
8 21
9
10 2
11
12
13
14
15
我试图通过以下有效值填充空白:df.fillna(method =' backfill')。这是有效的,但我需要将自上而下的有效值添加到下一个有效值,例如:
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
我可以通过循环来实现它,但是pandas中有一个方法可以做到这一点吗?
非常感谢!
答案 0 :(得分:4)
您可以反转df,然后fillna(0)
然后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
这里我们使用切片符号来反转df,然后用NaN
替换所有0
,执行cumsum
并反转
答案 1 :(得分:2)
另一种简单的方法:df.sum()-df.fillna(0).cumsum()