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 1uz 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 >>> 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\w+) (?P \w+)" Использование скомпилированного регулярного выражения с флагами
>>> 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