#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
это происходит в начале или в конце.