Функция Pandas Series.str.replace()

Pandas 常用函数Pandas: общие функции


Series.str.replace()Это функция в Pandas, используемая для замены указанного содержимого в строках.

При обработке данных нам часто нужно выполнять операции замены текста, например исправлять ошибочный текст, стандартизировать форматы данных, удалять нежелательные символы и т. д.replace()Функция позволяет гибко заменять указанное содержимое в строках и поддерживает сопоставление с регулярными выражениями.

Значение слова:replaceОно означает "replace," то есть замену старого содержимого новым.


Базовый синтаксис и параметры

str.replace()Это строковый аксессор Series, поэтому сначала нужен Series, содержащий строки, а затем используйте.strаксессор, чтобы вызвать его.

Формат синтаксиса

Series.str.replace(pat, repl, regex=False)

Описание параметра

Параметр Type Обязательный Описание Значение по умолчанию
pat str или regex Обязательный Шаблон для замены; может быть обычной строкой или регулярным выражением (когда regex=True). -
repl str или callable Обязательный Содержимое для замены; может быть строкой или вызываемой функцией (для продвинутой замены). -
regex bool Optional Определяет, следует ли рассматривать параметр pat как регулярное выражение. По умолчанию False. False

Описание функций

  • Возвращаемое значение: возвращает новый Series после замены.
  • Эффект: Заменяет совпавшее содержимое в каждом строковом элементе Series новым содержимым.
  • Примечание: По умолчанию используется обычное сопоставление строк. Если требуется сопоставление с регулярным выражением, необходимо установитьregex=True。

Примеры

Давайте разберём серию примеров от простых к сложным, чтобы основательно освоитьstr.replace()его использование.

Пример 1: Базовое использование — простая замена строк.

Пример

import pandas as pd

# Создать Series, содержащий текст
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])

# Заменить 'ap' на 'XX'
result = s.str.replace('ap', 'XX')

print("Исходный ряд:")
print(s)
print("nРезультат после замены:")
print(result)

Результат вывода:

原始 Series:
0        apple
1       banana
2       apricot
3    pineapple
dtype: object

替换后的结果:
0       XXle
1       banana
2       XXricot
3    XXneXXple

Пояснение к коду:

  1. s.str.replace('ap', 'XX')Заменяет все вхождения 'ap' на 'XX'.
  2. По умолчанию заменяется только первое совпадение (если оно встречается в строке несколько раз, заменяется только первое).
  3. Вы можете заменить все совпадения, добавив флаг регулярного выражения.

Пример 2: Использование регулярных выражений для замены всех совпадений

Когда нужно заменить все совпадения, можно использовать регулярные выражения.

Пример

import pandas as pd

# Создать Series, содержащий текст
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])

# Используйте регулярное выражение, чтобы заменить все 'ap' на 'XX'
result = s.str.replace('ap', 'XX', regex=True)

print("Исходный ряд:")
print(s)
print("nРезультат после замены всех 'ap':")
print(result)

Результат вывода:

原始 Series:
0        apple
1       banana
2       apricot
3    pineapple
dtype: object

替换所有 'ap' 后的结果:
0       XXle
1       banana
2       XXricot
3    XXneXXple

Пояснение к коду:

  • Setregex=Trueв True, затем используйте регулярные выражения для сопоставления.
  • В регулярном выражении,'ap'находит все вхождения 'ap' в строке.
  • В 'pineapple' два вхождения 'ap', и оба заменяются на 'XX'.

Пример 3: Замена чисел и символов

replace()Его можно использовать для очистки данных, например для удаления чисел или специальных символов.

Пример

import pandas as pd

# Создайте Series со смешанным содержимым
s = pd.Series(['phone: 123-456-7890', 'price: $99.99', 'date: 2024-01-01'])

# Удалить все числа
result_digits = s.str.replace(r'd', '', regex=True)

# Удалить все небуквенно-цифровые символы (сохранить пробелы)
result_special = s.str.replace(r'[^a-zA-Z0-9s]', '', regex=True)

print("Исходный ряд:")
print(s)
print("nПосле удаления всех чисел:")
print(result_digits)
print("nПосле удаления всех специальных символов:")
print(result_special)

Результат вывода:

原始 Series:
0    phone: 123-456-7890
1       price: $99.99
2       date: 2024-01-01
dtype: object

移除所有数字后:
phone: ---
price: $.$
date: ------

移除所有特殊字符后:
phone 1234567890
price 9999
date 20240101

Пояснение к коду:

  • r'd'является регулярным выражением, которое соответствует любой цифре.
  • r'[^a-zA-Z0-9s]'соответствует всем символам, которые не являются ни буквенно-цифровыми, ни пробелами.
  • Это очень распространённая операция при очистке данных.

Пример 4: Использование функции обратного вызова для замены

replПараметр может быть функцией для более сложной логики замены.

Пример

import pandas as pd

# Создать Series, содержащий текст
s = pd.Series(['hello', 'world', 'example', 'python'])

# Используйте функцию обратного вызова, чтобы преобразовать совпавшую строку в верхний регистр
result = s.str.replace(r'[aeiou]', lambda m: m.group(0).upper(), regex=True)

print("Исходный ряд:")
print(s)
print("nПосле преобразования гласных в верхний регистр:")
print(result)

Результат вывода:

原始 Series:
0       hello
1       world
2      example
3      python
dtype: object

将元音字母转为大写后:
0       hEllo
1       wOrld
2       example
3       pythOn

Пояснение к коду:

  • Функция обратного вызова получает объект match, и вы можете использоватьm.group(0)чтобы получить совпавшее содержимое.
  • Преобразует гласные (a, e, i, o, u) в верхний регистр.
  • Это хороший способ реализовать более сложную логику замены.

Пример 5: Стандартизация форматов данных

В реальных проектах,replace()его часто используют для стандартизации форматов данных.

Пример

import pandas as pd

# Имитация пользовательского ввода названий стран (несогласованные форматы)
countries = pd.Series(['USA', 'U.S.A.', 'U.S.A', 'usa', 'us', 'United States'])

# Единообразно заменить стандартными названиями
result = countries.replace({
    'USA': 'US',
    'U.S.A.': 'US',
    'U.S.A': 'US',
    'usa': 'US',
    'us': 'US',
    'United States': 'US'
})

print("Исходные названия стран:")
print(countries)
print("nРезультат после унификации:")
print(result)

Результат вывода:

原始国家名称:
0           USA
1        U.S.A.
2         U.S.A
3           usa
4            us
5    United States
dtype:
object

统一后的结果:
0    US
1    US
2    US
3    US
4    0    US
dtype: object

Пояснение к коду:

  • В этом примере используется Seriesreplace()метод (не str.replace).
  • Вы можете передать словарь для пакетной замены нескольких значений.
  • Приводит различные представления к стандартному формату.

Примечания

  • По умолчанию (regex=False),patпараметр рассматривается как обычная строка, и заменяется только первое совпадение.
  • Setregex=Trueв True, используйте регулярные выражения для сопоставления, и все совпадения могут быть заменены.
  • Некоторые специальные символы в регулярных выражениях (такие как.、*и т. д.) должны быть экранированы.
  • Если Series содержит значения NaN,replace()будет возвращено NaN.
  • Эта функция возвращает новый Series и не изменяет исходные данные.

Pandas 常用函数Pandas: общие функции

Другие расширения