pandas.Series.str.replace
- Series.str.replace(pat, repl, n=- 1, case=None, flags=0, regex=None)[source]
-
Замена каждого вхождения шаблона/регулярного выражения в Series/Index.
Эквивалентно
str.replace()илиre.sub(), в зависимости от значения regex.- Параметры
-
- pat:str или скомпилированное регулярное выражение
-
Строка может быть последовательностью символов или регулярным выражением.
- repl:str или вызываемый объект
-
Строка замены или вызываемый объект. Вызываемый объект получает объект соответствия регулярного выражения и должен возвращать строку замены. См.
re.sub(). - n:int, по умолчанию -1 (все)
-
Количество замен, выполняемых с начала.
- case:bool, по умолчанию None
-
Определяет, является ли замена чувствительной к регистру:
Если True, чувствительная к регистру (по умолчанию, если pat является строкой)
Установите значение False для нечувствительности к регистру
Не может быть установлено, если pat является скомпилированным регулярным выражением.
- flags:int, по умолчанию 0 (без флагов)
-
Флаги модуля регулярных выражений, например, re.IGNORECASE. Не может быть установлено, если pat является скомпилированным регулярным выражением.
- regex:bool, по умолчанию True
-
Определяет, является ли переданный шаблон регулярным выражением:
Если True, предполагает, что переданный шаблон является регулярным выражением.
Если False, обрабатывает шаблон как строку.
Не может быть установлено в значение False, если pat является скомпилированным регулярным выражением или repl — вызываемый объект.
В версии 0.23.0.
- Возвращает
-
- Series или Index объекта
-
Копия объекта со всеми соответствующими вхождениями pat, заменёнными на repl.
- Возможные исключения
-
- ValueError
-
если regex равно False, и repl является вызываемым объектом или pat — скомпилированным регулярным выражением
если pat является скомпилированным регулярным выражением, и case или flags установлены
Примечания
Когда pat является скомпилированным регулярным выражением, все флаги должны быть включены в скомпилированное регулярное выражение. Использование case, flags или regex=False со скомпилированным регулярным выражением вызовет ошибку.
Примеры
Когда pat является строкой, а regex равно True (по умолчанию), заданный pat компилируется как регулярное выражение. Когда repl — строка, она заменяет соответствующие шаблоны регулярных выражений так, как это показано в
re.sub(). Значение NaN в Series остаются неизменными:>>> pd.Series(['foo', 'fuz', np.nan]).str.replace('f.', 'ba', regex=True) 0 bao 1 baz 2 NaN dtype: objectКогда pat является строкой, а regex равно False, каждое pat заменяется на repl, как в
str.replace():>>> pd.Series(['f.o', 'fuz', np.nan]).str.replace('f.', 'ba', regex=False) 0 bao 1 fuz 2 NaN dtype: objectКогда repl — вызываемый объект, он вызывается для каждого pat с помощью
re.sub(). Вызываемый объект должен ожидать один позиционный аргумент (объект регулярного выражения) и возвращать строку.Для понимания:
>>> pd.Series(['foo', 'fuz', np.nan]).str.replace('f', repr, regex=True) 0 <re.Match object; span=(0, 1), match='f'>oo 1 <re.Match object; span=(0, 1), match='f'>uz 2 NaN dtype: objectОбратный порядок каждого строчного алфавитного слова:
>>> repl = lambda m: m.group(0)[::-1] >>> ser = pd.Series(['foo 123', 'bar baz', np.nan]) >>> ser.str.replace(r'[a-z]+', repl, regex=True) 0 oof 123 1 rab zab 2 NaN dtype: object
Использование групп регулярных выражений (извлечение второй группы и изменение регистра):
>>> pat = r"(?P<one>\w+) (?P<two>\w+) (?P<three>\w+)" >>> repl = lambda m: m.group('two').swapcase() >>> ser = pd.Series(['One Two Three', 'Foo Bar Baz']) >>> ser.str.replace(pat, repl, regex=True) 0 tWO 1 bAR dtype: objectИспользование скомпилированного регулярного выражения с флагами
>>> import re >>> regex_pat = re.compile(r'FUZ', flags=re.IGNORECASE) >>> pd.Series(['foo', 'fuz', np.nan]).str.replace(regex_pat, 'bar', regex=True) 0 foo 1 bar 2 NaN dtype: object
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.Series.str.replace.html