Как я могу использовать класс вменения для замены значения на значение в строке выше?

#python #scikit-learn #imputation

Вопрос:

У меня есть следующий фрейм данных:

 |1|2|3|
------
|4|-999|6|
------
|7|8|9|
 

Я хочу заменить единственное значение -999 значением из предыдущей строки в том же столбце. В этом случае значение равно 2, и фрейм данных будет выглядеть следующим образом:

 |1|2|3|
-
|4|2|6|
-
|7|8|9|
-
 

Я могу сделать это, используя итеративную структуру, но я думаю, что один из классов вменения лучше. Моим первым выбором было бы KNNImputer , но, хотя в нем говорится, что он использует значения из источника k-ближайших соседей, я не знаю, может ли он получить значение от этого соседа.

Итак, как я могу решить эту проблему? Является ли класс вменения хорошей идеей? Или есть что-то получше?

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

1. Всегда ли вы хотите заменить значение -999?

2. ДА. Я отредактировал свой вопрос.

Ответ №1:

Я бы предложил установить значение (-999) np.nan равным, а затем использовать fillna() с method='ffill' . Он распространяет последнее допустимое значение на значения NA.

Обратите внимание, что если первый элемент в каждом столбце np.nan , он не заполнен (так как перед ним нет значения для распространения).

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

1. Большое спасибо!