polars.Expr.sort_by
-
Сортирует этот столбец в соответствии с порядком других столбцов.
В контексте проекции/выбора сортируется весь столбец. В контексте группировки сортируются группы.
- Параметры:
-
- 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 | └───────┴────────┴────────┘
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
© 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