#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. Несколько минут назад я не мог…