排序
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 │
└─────┴─────┘