pandas用以前的非零值替换零

Gab*_*iel 17 python pandas

我有以下数据帧:

index = range(14)
data = [1, 0, 0, 2, 0, 4, 6, 8, 0, 0, 0, 0, 2, 1]
df = pd.DataFrame(data=data, index=index, columns = ['A'])
Run Code Online (Sandbox Code Playgroud)

如何使用pandas使用之前的非零值填充零?是否有一个不仅仅是"NaN"的填充物?

输出应如下所示:

[1, 1, 1, 2, 2, 4, 6, 8, 8, 8, 8, 8, 2, 1]
Run Code Online (Sandbox Code Playgroud)

(这个问题在此之前被问过用一个非零值填充1d numpy数组的零值,但他只是要求一个numpy解决方案)

Zer*_*ero 36

你可以用replacemethod='ffill'

In [87]: df['A'].replace(to_replace=0, method='ffill')
Out[87]:
0     1
1     1
2     1
3     2
4     2
5     4
6     6
7     8
8     8
9     8
10    8
11    8
12    2
13    1
Name: A, dtype: int64
Run Code Online (Sandbox Code Playgroud)

要获得numpy数组,请继续 values

In [88]: df['A'].replace(to_replace=0, method='ffill').values
Out[88]: array([1, 1, 1, 2, 2, 4, 6, 8, 8, 8, 8, 8, 2, 1], dtype=int64)
Run Code Online (Sandbox Code Playgroud)