Замена значений в столбце DataFrame в pandas: варианты решения

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для моментальной замены значений в колонке DataFrame примените метод .replace():

Python
Скопировать код
df['A'].replace(10, 'десять', inplace=True)

В указанном выше примере производится замена всех '10' на 'десять' в колонке 'A'.

Если требуется произвести сразу несколько замен, например, 10 на 'десять', и 20 на 'двадцать', используйте словарь:

Python
Скопировать код
df['A'].replace({10: 'десять', 20: 'двадцать'}, inplace=True)
Кинга Идем в IT: пошаговый план для смены профессии

Детальное рассмотрение процесса замены

Работа с категориальными данными

Преобразование категориальных данных удобно осуществлять с использованием метода map. Например, при замене 'female' на '1' и 'male' на '0', код будет выглядеть следующим образом:

Python
Скопировать код
gender_map = {'female': 1, 'male': 0}
df['Gender'] = df['Gender'].map(gender_map)

Условная замена с применением loc

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

Python
Скопировать код
df.loc[df['Age'] > 50, 'AgeCategory'] = 'Senior'
df.loc[df['Age'] <= 50, 'AgeCategory'] = 'Adult'

Преобразование текстовых меток в числовые значения

Если после замены текстовые метки следует конвертировать в числа, хорошо подходит функция pd.to_numeric():

Python
Скопировать код
df['Score'] = df['Score'].replace(['low', 'medium', 'high'], [1, 2, 3])
df['Score'] = pd.to_numeric(df['Score'])

Визуализация

Рассмотрим DataFrame с перечислением автомобилей, в котором требуется обновить типы топлива:

🚗 Исходный список:🛵🚙🚌🚜✔️
ББДТЭ

🔄 Произведём замену 'Дизель' на 'Электричество':

df['FuelType'].replace('Д', 'Э', inplace=True)

🚗 Обновлённый список:🛵🚙🚌🛴✔️
ЭБЭТЭ

Таким образом, наш гараж теперь удовлетворяет экологическим требованиям. 🌱⚡

Практические советы по обработке замен

Точность выборки данных

Перед процессом замены убедитесь, что индексы колонок и строк указаны правильно, чтобы избежать неточностей:

Python
Скопировать код
df.loc[2:4, 'A'] = df.loc[2:4, 'A'].replace({10: 'десять'})

Сохранение значений NaN при замене

Для сохранения значений NaN воспользуйтесь параметром replace:

Python
Скопировать код
df['A'] = df['A'].replace({10: 'десять', 20: 'двадцать'}, inplace=True)

Применение векторизации вместо циклов for

Для ускорения процесса выполнения операций предпочтительно использовать методы вроде apply и «векторизацию», а не циклы for. Пример с np.where:

Python
Скопировать код
import numpy as np

df['A'] = np.where(df['A'] == 10, 'десять', df['A'])

Полезные материалы

  1. pandas.DataFrame.replace — Документация pandas 2.2.0 — полная документация по методу .replace().
  2. python – Переназначение значений в столбце pandas с использованием словаря, сохранение NaN – Stack Overflow — обсуждение переназначения значений с сохранением NaN.
  3. 10 минут с pandas — Документация pandas 2.2.0 — короткое руководство по начальной работе с pandas.
  4. Выборка данных в Pandas: Часть 1 | автор Ted Petrou | Dunder Data | Medium — инструкция по выборке и изменению данных с помощью loc[] и iloc[].
  5. python – Задать значение для конкретной ячейки в DataFrame pandas с помощью iloc – Stack Overflow — обсуждение применения iloc для замены значений по условиям.
  6. Использование pandas и Python для изучения вашего набора данных – Real Python — практическое руководство по работе с данными в pandas.