polars.Expr.name.replace
-
Заменяет соответствующую регулярному выражению или литеральную подстроку в имени новым значением.
- Параметры:
-
- pattern
-
Допустимый шаблон регулярного выражения, совместимый с крейтом regex.
- value
-
Строка, которая заменит соответствующую подстроку.
- literal
-
Обрабатывать
patternкак строку, а не как регулярное выражение.
См. также
Примечания
- Чтобы изменить поведение регулярного выражения (например, чувствительность к регистру) с помощью флагов, используйте встроенный синтаксис
(?iLmsuxU). Дополнительные сведения об использовании встроенных модификаторов выражений см. в разделе крейта regex, посвящённом группировке и флагам. - Знак доллара (
$) — это специальный символ, связанный с группами захвата; если нужно заменить целевой шаблон символами, содержащими литеральный$, его следует экранировать, удвоив его:$$, либо задатьliteral=True, если не требуется сопоставление с полным шаблоном регулярного выражения. В противном случае будет указана группа захвата (которая может не существовать).
Примеры
>>> df = pl.DataFrame( ... { ... "n_foo": [1, 2, 3], ... "n_bar": ["x", "y", "z"], ... } ... ) >>> df.select(pl.all().name.replace(r"^n_", "col_")) shape: (3, 2) ┌─────────┬─────────┐ │ col_foo ┆ col_bar │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════════╪═════════╡ │ 1 ┆ x │ │ 2 ┆ y │ │ 3 ┆ z │ └─────────┴─────────┘ >>> df.select(pl.all().name.replace(r"(a|e|i|o|u)", "@")).schema Schema({'n_f@@': Int64, 'n_b@r': String})Выполните замену строки без учёта регистра, используя флаг
(?i).>>> pl.DataFrame({"Foo": [1], "faz": [2]}).select( ... pl.all().name.replace(r"(?i)^f", "b") ... ) shape: (1, 2) ┌─────┬─────┐ │ boo ┆ baz │ │ --- ┆ --- │ │ i64 ┆ i64 │ ╞═════╪═════╡ │ 1 ┆ 2 │ └─────┴─────┘Поддерживаются группы захвата. Используйте
$1или${1}в строкеvalue, чтобы сослаться на первую группу захвата в шаблоне,$2или${2}— на вторую и так далее. Также можно использовать именованные группы захвата.>>> df = pl.DataFrame({"x_1": [1], "x_2": [2], "group_id": ["xyz"]}) >>> df.select(pl.all().name.replace(r"_(\d+)$", ":$1")) shape: (1, 3) ┌─────┬─────┬──────────┐ │ x:1 ┆ x:2 ┆ group_id │ │ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ str │ ╞═════╪═════╪══════════╡ │ 1 ┆ 2 ┆ xyz │ └─────┴─────┴──────────┘Форма
${1}используется, чтобы отделить ссылку на группу от окружающего текста.>>> df = pl.DataFrame({"hat": [1], "hut": [2]}).with_row_index() >>> df.with_columns(pl.all().name.replace(r"^h(.)t", "s$1m")) # ComputeError: the name 's' passed to `LazyFrame.with_columns` is duplicate>>> df.with_columns(pl.all().name.replace(r"^h(.)t", "s${1}m")) shape: (1, 5) ┌───────┬─────┬─────┬─────┬─────┐ │ index ┆ hat ┆ hut ┆ sam ┆ sum │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ u32 ┆ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═══════╪═════╪═════╪═════╪═════╡ │ 0 ┆ 1 ┆ 2 ┆ 1 ┆ 2 │ └───────┴─────┴─────┴─────┴─────┘
Expr.name.replace(
pattern: str,
value: str,
*,
literal: bool = False,
) → Expr
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.name.replace.html