pandas.Series.str.replace
- Series.str.replace(pat, repl, n=-1, case=None, flags=0, regex=False)[source]
-
Замена каждого вхождения шаблона/регулярного выражения в серии/индексе.
Эквивалентно
str.replace()илиre.sub(), в зависимости от значения regex.- Параметры:
-
- pat:строка или скомпилированное регулярное выражение
-
Строка может быть последовательностью символов или регулярным выражением.
- repl:строка или вызываемый объект
-
Строка-замена или вызываемый объект. Вызываемый объект получает объект совпадения регулярного выражения и должен возвращать строку-замену. См.
re.sub(). - n:целое число, по умолчанию -1 (все)
-
Количество замен, которые нужно выполнить с начала.
- case:логическое значение, по умолчанию None
-
Определяет, чувствительно ли замена к регистру:
Если True, чувствительно к регистру (значение по умолчанию, если pat — строка)
Установите в False для нечувствительности к регистру
Не может быть установлено, если pat — скомпилированное регулярное выражение.
- flags:целое число, по умолчанию 0 (нет флагов)
-
Флаги модуля регулярных выражений, например, re.IGNORECASE. Не может быть установлено, если pat — скомпилированное регулярное выражение.
- regex:логическое значение, по умолчанию False
-
Определяет, является ли переданный шаблон регулярным выражением:
Если True, предполагается, что переданный шаблон — регулярное выражение.
Если False, шаблон обрабатывается как строка
Не может быть установлено в False, если pat — скомпилированное регулярное выражение или repl — вызываемый объект.
- Возвращает:
-
- Серия или индекс объекта
-
Копия объекта со всеми соответствующими вхождениями pat, замененными на repl.
- Возбуждает:
-
- ValueError
-
если regex — False, а repl — вызываемый объект или pat — скомпилированное регулярное выражение
если pat — скомпилированное регулярное выражение, а case или flags установлены
Примечания
Когда pat — скомпилированное регулярное выражение, все флаги должны быть включены в скомпилированное регулярное выражение. Использование case, flags или regex=False со скомпилированным регулярным выражением приведет к ошибке.
Примеры
Когда pat — строка, а regex — True, заданный pat компилируется как регулярное выражение. Когда repl — строка, она заменяет соответствующие шаблоны регулярных выражений, как и в
re.sub(). Значение NaN в серии остается неизменным:>>> 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/2.2.2/reference/api/pandas.Series.str.replace.html