You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于某列绝对值对Polars DataFrame进行升/降序排序?

按列的绝对值对Polars DataFrame排序

要实现按val列的绝对值排序,Polars可以通过sort()方法结合表达式生成的排序键完成,无需额外创建临时列。

升序排序(绝对值从小到大)

直接在sort()中传入pl.col("val").abs()作为排序依据:

df_sorted_asc = df.sort(pl.col("val").abs())

输出结果:

┌──────┬─────┬─────┐
│ name ┆ id  ┆ val │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ i32 │
╞══════╪═════╪═════╡
│ two  ┆ B   ┆ 0   │
│ two  ┆ C   ┆ -3  │
│ one  ┆ C   ┆ -4  │
│ one  ┆ B   ┆ 4   │
│ two  ┆ C   ┆ -4  │
│ one  ┆ A   ┆ 9   │
└──────┴─────┴─────┘

降序排序(绝对值从大到小)

添加reverse=True参数即可实现降序:

df_sorted_desc = df.sort(pl.col("val").abs(), reverse=True)

输出结果:

┌──────┬─────┬─────┐
│ name ┆ id  ┆ val │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ i32 │
╞══════╪═════╪═════╡
│ one  ┆ A   ┆ 9   │
│ one  ┆ C   ┆ -4  │
│ one  ┆ B   ┆ 4   │
│ two  ┆ C   ┆ -4  │
│ two  ┆ C   ┆ -3  │
│ two  ┆ B   ┆ 0   │
└──────┴─────┴─────┘

补充:分组后按绝对值排序

如果需要分组后再按绝对值排序,可以结合group_by()和sort():

df_group_sorted = df.group_by("name", maintain_order=True).sort(pl.col("val").abs())

输出结果:

┌──────┬─────┬─────┐
│ name ┆ id  ┆ val │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ i32 │
╞══════╪═════╪═════╡
│ one  ┆ C   ┆ -4  │
│ one  ┆ B   ┆ 4   │
│ one  ┆ A   ┆ 9   │
│ two  ┆ B   ┆ 0   │
│ two  ┆ C   ┆ -3  │
│ two  ┆ C   ┆ -4  │
└──────┴─────┴─────┘

内容的提问来源于stack exchange,提问作者beta green

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:12:16