Spec-Zone.ru › Polars

polars.Expr.name.replace

Expr.name.replace(
    pattern: str,
    value: str,
    *,
    literal: bool = False,
) → Expr

Заменяет соответствующую регулярному выражению или литеральную подстроку в имени новым значением.

движок:В памятиПотоковая обработкаРаспределённая обработкаGPU
Параметры:
pattern

Допустимый шаблон регулярного выражения, совместимый с крейтом regex.

value

Строка, которая заменит соответствующую подстроку.

literal

Обрабатывать pattern как строку, а не как регулярное выражение.

См. также

Expr.str.replace

Примечания

  • Чтобы изменить поведение регулярного выражения (например, чувствительность к регистру) с помощью флагов, используйте встроенный синтаксис (?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   │
└───────┴─────┴─────┴─────┴─────┘

© 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

Spec-Zone.ru

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