Как заполнить значения na в столбце средним значением предыдущего значения, отличного от na, и следующего значения, отличного от na, в панд?

#python #pandas #dataframe #data-preprocessing

Вопрос:

Необработанный стол:

Колонка А
5
nan
nan
15

Новая таблица:

Колонка А
5
10
10
15

Комментарии:

1. для этого конкретного примера : df.fillna(df.mean())

Ответ №1:

Одним из вариантов может быть следующее (использование fillna дважды (с опциями ffill и bfill ), а затем их усреднение):

 import pandas as pd import numpy as np  df = pd.DataFrame({'x': [np.nan, 5, np.nan, np.nan, 15]}) filled_series = [df['x'].fillna(method=m) for m in ('ffill', 'bfill')] print(pd.concat(filled_series, axis=1).mean(axis=1)) # 0 5.0 # 1 5.0 # 2 10.0 # 3 10.0 # 4 15.0  

Как вы можете видеть, это работает, даже если nan это происходит в начале или в конце.