Заполнение модой пропусков в столбцах с категориальными значениями

Прошу помощи! Есть условный датафрейм (q) с категориальными значениями в столбцах, в которых есть пропуски. Хочу заполнить пропуски модой, с созданием нового фрейма (w) однако код:

w = fillna(q.mode())

заполняет пропуски модой только в первой строке нового фрейма. Подскажите, пожалуйста, в чем ошибка?


Ответы (1 шт):

Автор решения: strawdog

удивительно, что ваш код вообще что-то заполняет. ошибка ваша в том, что метод .mode() возвращает датафрейм, а при заполнении NaN датафреймом получается именно то, что получается у вас. поэтому нужно результат mode() перевести в словарь или серию для маппинга значений по столбцам, и уже ей заполнять:

df2 = df.fillna(df.mode().squeeze())

или

df2 = df.fillna(df.mode().iloc[0])

или

df2 = df.fillna(df.mode().to_dict("records")[0])
→ Ссылка