Pandas replace() – Замена значений в DataFrame Pandas
В этом посте вы узнаете, как использовать метод .replace()
Pandas для замены данных в вашем DataFrame. Метод DataFrame.replace()
Pandas может быть использован для замены строки, значений и даже регулярных выражений (regex) в вашем DataFrame.
Обновление на 2023 год
Весь пост был переписан, чтобы сделать содержание более понятным и легким для восприятия. Теперь в учебнике также рассматривается параметр method=
, а также предоставлена шпаргалка по использованию функции (см. ниже).
Быстрый ответ:
Оглавление
Синтаксис метода замены Pandas
Метод .replace()
в Pandas принимает множество различных параметров. Давайте рассмотрим их:
В приведенном ниже списке указано, что ожидают параметры метода .replace()
и что они представляют:
to_replace=
: принимает строку, список, словарь, регулярное выражение, int, float и т. д., и описывает значения для заменыvalue=
: Значение для заменыinplace=
: выполнять операцию на местеlimit=
: максимальный размер промежутка для обратного или прямого заполненияregex=
: интерпретировать ли to_replace и/или значение как регулярное выражениеmethod=
: метод, который следует использовать для замены
Давайте углубимся в то, как использовать этот метод, начав с загрузки образца DataFrame Pandas.
Загрузка образца DataFrame
Чтобы начать, давайте сначала загрузим DataFrame в Pandas. Мы сделаем все максимально просто, чтобы было легче понять, что именно мы заменяем.
Давайте теперь погрузимся в то, как использовать метод, начиная с того, как заменить одно значение в данном столбце.
Замените одно значение в столбце DataFrame Pandas
Давайте научимся заменять отдельное значение в столбце Pandas. В приведенном ниже примере мы посмотрим, как заменить значение Jane
на Joan
. Для этого нам просто нужно передать значение, которое мы хотим заменить, в параметр to_replace=
, а значение, на которое хотим заменить, — в параметр value=
В приведенном выше блоке кода мы использовали метод .replace()
непосредственно к столбцу, переназначив столбец сам на себя. Поскольку два параметра являются первым и вторым параметрами позиционно, нам на самом деле не нужно их указывать по имени
Замените несколько значений одним и тем же значением в кадре данных Pandas
Теперь вы можете захотеть заменить несколько значений на одно и то же значение. Сделать это также очень просто, используя метод .replace()
Конечно, вы можете просто запустить метод дважды, но есть гораздо более эффективный способ достичь этого. Здесь мы будем заменять London
и Paris
на Europe
:
В приведенном выше блоке кода мы передали список значений в параметр to_replace=
. Это позволяет искать оба эти значения в столбце. Поскольку мы передали только одно значение в параметр value=
, это значение используется для замены обоих других значений.
Теперь давайте посмотрим, как заменить несколько значений на другие в следующем разделе.
Замените несколько значений разными значениями в кадре данных Pandas
Как и в приведенном выше примере, вы можете заменить список из нескольких значений на список других.
Чтобы сделать это, вы можете передать список значений в параметр to_replace=
, а также список такой же длины в параметр value=
В приведенном ниже примере мы заменим London
на England
и Paris
на France
:
В следующем разделе мы рассмотрим, как это сделать для значений по всему DataFrame, а не для отдельного столбца.
Заменить значения во всем кадре данных
В предыдущих примерах вы узнали, как заменять значения в одном столбце. Аналогично этим примерам, мы можем легко заменять значения во всем DataFrame.
Давайте заменим букву F
на P
во всем DataFrame:
В приведенном выше примере мы применили метод .replace()
ко всему DataFrame. Мы видим, что это не принесло ожидаемых результатов. В данном случае заменяются только те ячейки, значения которых полностью соответствуют условиям.
Замена значений регулярными выражениями (регулярные выражения)
Чтобы заменить подстроки в DataFrame Pandas, можно указать Pandas использовать регулярные выражения (regex). Чтобы заменить подстроки (например, в Melissa), мы просто передаем regex=True
:
Давайте также более подробно рассмотрим более сложные замены с использованием регулярных выражений.
Использование Pandas .replace() с более сложным регулярным выражением
Мы можем использовать регулярные выражения для выполнения сложных замен.
Мы рассмотрим достаточно простой пример, где мы заменяем любое четырехбуквенное слово в колонке Имя
на “Четырехбуквенное имя”.
Следующий вызов метода .replace()
делает именно это:
В следующем разделе вы научитесь заменять значения на месте.
Замените значения на месте с помощью Pandas
Мы также можем заменять значения на месте, без необходимости их повторного присваивания. Это делается путем установки inplace=
в True
Давайте вернемся к более раннему примеру:
Хотя этот подход и позволяет сэкономить некоторое количество памяти (поскольку не требуется создание нового объекта), часто лучше придерживаться единообразия с остальной частью вашего кода.
Использование словарей для замены значений с помощью Pandas replace
Метод .replace()
в Pandas также позволяет использовать словари для замены значений. Это может быть удобным способом обработки множества замен. Однако это не мой предпочтительный подход, так как поведение часто может быть сложным для понимания.
Давайте посмотрим, как метод может заменять значения:
Мы видим, что словарь можно использовать двумя разными способами:
Чтобы сопоставить значения для замены, чтобы словарь представлял
{original value : new value}
Чтобы сопоставить замены из столбцов так, чтобы они соответствовали структуре, показанной здесь:
to_replace={column1: value1, column2: value2}, value=new value
Хотя первый подход более краткий, я бы предпочел использовать метод map() в Pandas для этого подхода.
Второй метод предоставляет больше гибкости для использования этого метода с разными столбцами, но может быть немного сложнее для восприятия. В таких случаях я лично предпочту вызвать метод дважды для разных столбцов.
Заключение
В этом посте вы научились использовать метод replace в Pandas для замены значений в DataFrame Pandas. Метод .replace()
чрезвычайно мощный и позволяет заменять значения в одном столбце, нескольких столбцах и во всем DataFrame. Метод также включает в себя регулярные выражения, чтобы упростить выполнение сложных замен.
Чтобы узнать больше о методе .replace()
в библиотеке Pandas, ознакомьтесь с официальной документацией здесь.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, посетите ресурсы ниже:
Pandas: замените NaN нулями
Python: заменить элемент в списке (6 разных способов)
Преобразование столбцов Pandas с помощью карты и применения
Last updated