заполнение в Пандах — как автоматически выбрать лучший метод?

#python #pandas #nan #fillna

Вопрос:

Предположим, у меня есть фрейм данных, содержащий столбцы с большим количеством значений nan — на самом деле большинство значений отсутствуют, за исключением одного (или нескольких идентичных), но распределены по разным линиям. Например:

 df = pd.DataFrame({'A':[np.nan, 2, np.nan], 'B':[3.5, np.nan, 3.5], 'C':[np.nan, np.nan, 0.1]})  

Итак, как я могу создать фрейм данных, который выглядит следующим образом?

 A B C 0 2 3.5 0.1 1 2 3.5 0.1 2 2 3.5 0.1  

«заполнение» будет работать только для столбца «C», «заполнение» только для столбца «B»…

Итак, как я могу заменить все значения nan в столбце значением notna, присутствующим в любом месте и в любом количестве экземпляров в этом столбце?

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

1. Что произойдет, если у вас будет больше этого значения, отличного от NaN?

2. Я этого не делаю, но панды просто склонны использовать последнее значение not NaN для ffill и первое значение not Nan для bfill, так что это просто скопирует соседние значения.

Ответ №1:

Заполнение вперед, заполнение кадра данных обратно.

 df =df.ffill().bfill()  

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

1. Ха-ха, я только что сделал это, просто в двух отдельных строках, и чувствовал себя довольно глупо, наверняка должен быть более изящный способ сделать это. Не понимал, что могу, по крайней мере, сделать это в одной строке 🙂 Спасибо

2. Несколько минут назад я не мог…