Spec-Zone.ru › pandas 1

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API