Spec-Zone.ru › Polars

polars.Expr.sort_by

Expr.sort_by(
    by: IntoExpr | Iterable[IntoExpr],
    *more_by: IntoExpr,
    descending: bool | Sequence[bool] = False,
    nulls_last: bool | Sequence[bool] = False,
    multithreaded: bool = True,
    maintain_order: bool = False,
) → Expr

Сортирует этот столбец в соответствии с порядком других столбцов.

движок:В памятиЧастично потоковый

В контексте проекции/выбора сортируется весь столбец. В контексте группировки сортируются группы.

Параметры:
by

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

*more_by

Дополнительные столбцы для сортировки, задаваемые позиционными аргументами.

descending

Сортировать в порядке убывания. При сортировке по нескольким столбцам можно задать порядок отдельно для каждого столбца, передав последовательность логических значений.

nulls_last

Помещать значения null в конец; можно задать одно логическое значение для всех столбцов или последовательность логических значений для управления каждым столбцом отдельно.

multithreaded

Сортировать с использованием нескольких потоков.

maintain_order

Следует ли сохранять порядок элементов с одинаковыми значениями.

Примеры

Передайте имя столбца, чтобы отсортировать данные по этому столбцу.

>>> df = pl.DataFrame(
...     {
...         "group": ["a", "a", "b", "b"],
...         "value1": [1, 3, 4, 2],
...         "value2": [8, 7, 6, 5],
...     }
... )
>>> df.select(pl.col("group").sort_by("value1"))
shape: (4, 1)
┌───────┐
│ group │
│ ---   │
│ str   │
╞═══════╡
│ a     │
│ b     │
│ a     │
│ b     │
└───────┘

Также поддерживается сортировка по выражениям.

>>> df.select(pl.col("group").sort_by(pl.col("value1") + pl.col("value2")))
shape: (4, 1)
┌───────┐
│ group │
│ ---   │
│ str   │
╞═══════╡
│ b     │
│ a     │
│ a     │
│ b     │
└───────┘

Чтобы отсортировать данные по нескольким столбцам, передайте список столбцов.

>>> df.select(pl.col("group").sort_by(["value1", "value2"], descending=True))
shape: (4, 1)
┌───────┐
│ group │
│ ---   │
│ str   │
╞═══════╡
│ b     │
│ a     │
│ b     │
│ a     │
└───────┘

Или используйте позиционные аргументы, чтобы аналогичным образом отсортировать данные по нескольким столбцам.

>>> df.select(pl.col("group").sort_by("value1", "value2"))
shape: (4, 1)
┌───────┐
│ group │
│ ---   │
│ str   │
╞═══════╡
│ a     │
│ b     │
│ a     │
│ b     │
└───────┘

В контексте группировки сортируются группы.

>>> df.group_by("group").agg(
...     pl.col("value1").sort_by("value2")
... )  
shape: (2, 2)
┌───────┬───────────┐
│ group ┆ value1    │
│ ---   ┆ ---       │
│ str   ┆ list[i64] │
╞═══════╪═══════════╡
│ a     ┆ [3, 1]    │
│ b     ┆ [2, 4]    │
└───────┴───────────┘

Выберите одну строку из каждой группы, в которой столбец достигает минимального значения в этой группе.

>>> df.group_by("group").agg(
...     pl.all().sort_by("value2").first()
... )  
shape: (2, 3)
┌───────┬────────┬────────┐
│ group ┆ value1 ┆ value2 |
│ ---   ┆ ---    ┆ ---    │
│ str   ┆ i64    ┆ i64    |
╞═══════╪════════╪════════╡
│ a     ┆ 3      ┆ 7      |
│ b     ┆ 2      ┆ 5      |
└───────┴────────┴────────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.sort_by.html

Spec-Zone.ru

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