Функция Pandas Series.str.replace()
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: Базовое использование — простая замена строк.
Пример
# Создать 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
Пояснение к коду:
s.str.replace('ap', 'XX')Заменяет все вхождения 'ap' на 'XX'.- По умолчанию заменяется только первое совпадение (если оно встречается в строке несколько раз, заменяется только первое).
- Вы можете заменить все совпадения, добавив флаг регулярного выражения.
Пример 2: Использование регулярных выражений для замены всех совпадений
Когда нужно заменить все совпадения, можно использовать регулярные выражения.
Пример
# Создать 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
Пояснение к коду:
- Set
regex=Trueв True, затем используйте регулярные выражения для сопоставления. - В регулярном выражении,
'ap'находит все вхождения 'ap' в строке. - В 'pineapple' два вхождения 'ap', и оба заменяются на 'XX'.
Пример 3: Замена чисел и символов
replace()Его можно использовать для очистки данных, например для удаления чисел или специальных символов.
Пример
# Создайте 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Параметр может быть функцией для более сложной логики замены.
Пример
# Создать 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()его часто используют для стандартизации форматов данных.
Пример
# Имитация пользовательского ввода названий стран (несогласованные форматы)
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
Пояснение к коду:
- В этом примере используется Series
replace()метод (не str.replace). - Вы можете передать словарь для пакетной замены нескольких значений.
- Приводит различные представления к стандартному формату.
Примечания
- По умолчанию (
regex=False),patпараметр рассматривается как обычная строка, и заменяется только первое совпадение. - Set
regex=Trueв True, используйте регулярные выражения для сопоставления, и все совпадения могут быть заменены. - Некоторые специальные символы в регулярных выражениях (такие как
.、*и т. д.) должны быть экранированы. - Если Series содержит значения NaN,
replace()будет возвращено NaN. - Эта функция возвращает новый Series и не изменяет исходные данные.
Другие расширения
Pandas: общие функции