Подтвердить что ты не робот

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

Как заполнить нули предыдущим ненулевым значением с помощью pandas? Есть ли заливка, которая не только для "NaN"?.

Результат должен выглядеть так:

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

(Этот вопрос задавался здесь Заполнять нулевые значения массива 1d numpy с последними ненулевыми значениями, но он запрашивал исключительно для решения numpy)

4b9b3361

Ответ 1

Вы можете использовать replace с method='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)