pandas.Series.str.replace#

Series.str.replace(шаблон, repl, n=-1, случай=None, флаги=0, regex=False)[источник]#

Заменить каждое вхождение шаблона/регулярного выражения в Series/Index.

Эквивалентно str.replace() или re.sub(), в зависимости от значения regex.

Параметры:
шаблонstr или скомпилированное регулярное выражение

Строка может быть последовательностью символов или регулярным выражением.

replstr или callable

Строка замены или вызываемый объект. Вызываемому объекту передается объект совпадения regex и он должен вернуть строку замены для использования. См. re.sub().

nint, по умолчанию -1 (все)

Количество замен для выполнения с начала.

случайbool, по умолчанию None

Определяет, чувствительна ли замена к регистру:

  • Если True, учитывается регистр (по умолчанию, если шаблон является строкой)

  • Установите False для регистронезависимого

  • Не может быть установлено, если шаблон является скомпилированным регулярным выражением.

флагиint, по умолчанию 0 (без флагов)

Флаги модуля регулярных выражений, например re.IGNORECASE. Не может быть установлен, если шаблон является скомпилированным регулярным выражением.

regexbool, по умолчанию False

Определяет, является ли переданный шаблон регулярным выражением:

  • Если True, предполагается, что переданный шаблон является регулярным выражением.

  • Если False, обрабатывает шаблон как строковый литерал

  • Не может быть установлено в False, если шаблон является скомпилированным регулярным выражением или repl является вызываемым объектом.

Возвращает:
Series или Index объекта

Копия объекта со всеми совпадающими вхождениями шаблон заменено на repl.

Вызывает:
ValueError
  • if regex равно False и repl является вызываемым объектом или шаблон является скомпилированным регулярным выражением

  • if шаблон является скомпилированным регулярным выражением и случай или флаги установлен

Примечания

Когда шаблон является скомпилированным регулярным выражением, все флаги должны быть включены в скомпилированное регулярное выражение. Использование случай, флаги, или regex=False скомпилированное регулярное выражение вызовет ошибку.

Примеры

Когда шаблон является строкой и regex равно True, заданный шаблон компилируется как регулярное выражение. Когда 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

Когда шаблон является строкой и regex равно False, каждый шаблон заменяется на 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 является вызываемым объектом, он вызывается на каждом шаблон используя re.sub(). Вызываемый объект должен ожидать один позиционный аргумент (объект регулярного выражения) и возвращать строку.

Чтобы понять идею:

>>> pd.Series(['foo', 'fuz', np.nan]).str.replace('f', repr, regex=True)
0    oo
1    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\w+) (?P\w+) (?P\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