首页 文章

pandas用以前的非零值替换零

提问于
浏览
12

我有以下数据帧:

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'])

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

输出应如下所示:

[1, 1, 1, 2, 2, 4, 6, 8, 8, 8, 8, 8, 2, 1]

(这个问题在此之前被问过Fill zero values of 1d numpy array with last non-zero values,但他只是要求一个numpy解决方案)

1 回答

  • 26

    您可以使用 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
    

    要获得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)
    

相关问题