Функции map() и replace() в pandas: замена значений

Series.map(словарь) заменяет каждое значение по словарю сопоставления — быстро и векторно. df.replace() делает то же, но гибче: работает по всему DataFrame, поддерживает частичную замену и регулярки. Аналитик использует их для перекодировки категорий (город → регион), нормализации значений и маппинга кодов в названия.

Синтаксис

df['col'].map({'a': 1, 'b': 2}) | df.replace({'old': 'new'})

Примеры использования

Пример 1: Категория в числовой код через map

df['seg_code'] = df['segment'].map({'VIP': 3, 'средний': 2, 'новичок': 1})

Результат:

   segment  seg_code
0      VIP         3
1  новичок         1

Пример 2: Нормализация значений через replace

df['status'] = df['status'].replace({'ok': 'paid', 'success': 'paid'})

Результат:

(разные написания статуса сведены к 'paid')
Порешать Python-задачи в тренажёре →

Типичная ошибка

Ключевая ловушка map: значения, которых нет в словаре, становятся NaN — если нужно сохранить исходное, используй .map(словарь).fillna(df['col']) или замени на replace (он не трогает несопоставленные). map работает только на Series, replace — и на Series, и на всём DataFrame. Для замены по условию, а не по точному значению, бери np.where/np.select.

Где спрашивают на собеседовании

.map и replace спрашивают в задачах на перекодировку категорий и нормализацию грязных данных. Ценят знание, что map превращает несопоставленные значения в NaN (а replace — нет) и что map быстрее apply для простого маппинга.

FAQ: частые вопросы про .map / replace

Чем map отличается от replace?

map заменяет по словарю И превращает несопоставленные значения в NaN (полная перекодировка). replace меняет только указанные значения, остальные оставляет как есть (частичная замена). map — только на Series, replace — на всём DataFrame.

Почему после map появились NaN?

Значения, отсутствующие в словаре map, становятся NaN. Чтобы сохранить исходные, добавь .fillna(df['col']) после map или используй replace, который не трогает несопоставленные.

Чем map лучше apply для замены?

Для простого сопоставления «значение → значение» map быстрее и читается чище, чем apply с функцией: он оптимизирован под словарь и Series.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →