排序

Polars 支持与其他数据框架库类似的排序行为,即按一个或多个列以及多个(不同的)顺序进行排序。

数据集

import numpy as np import polars as pl df = pl.DataFrame({"a": np.arange(1, 4), "b": ["a", "a", "b"]}) # np.arange(1, 4): 生成[1, 4)的数组 print(df)
shape: (3, 2) ┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════╪═════╡ │ 1 ┆ a │ │ 2 ┆ a │ │ 3 ┆ b │ └─────┴─────┘

急性

out = df.sort(["b", "a"], descending=[True, False]) # 分别对两列"b", "a"进行排序,"b"逆序,"a"顺序 print(out)
shape: (3, 2) ┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════╪═════╡ │ 1 ┆ a │ │ 2 ┆ a │ │ 3 ┆ b │ └─────┴─────┘

惰性

import polars as pl q = df.lazy().sort(pl.col("a"), descending=True) # 惰性排序,对"a"列 df = q.collect() print(out)
shape: (3, 2) ┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════╪═════╡ │ 3 ┆ b │ │ 2 ┆ a │ │ 1 ┆ a │ └─────┴─────┘