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

如何在Polars中按组反转DataFrame列顺序?能否用with_columns实现?

Polars分组内反转列顺序(非排序)实现方法

当然可以用.with_columns()完成分组内的列反转操作,核心是利用Polars的窗口函数结合.reverse()方法,在分组范围内执行反转逻辑(注意:reverse()是倒转原有顺序,不是对值进行排序)。

完整实现代码

import polars as pl

df = pl.DataFrame(
    data={
        'group': ['a', 'a', 'a', 'b', 'b'],
        'value': [1, 2, 3, 4, 5],
    }
)

# 在with_columns中完成分组内反转
result_df = df.with_columns(
    pl.col("value").reverse().over("group").alias("value")
)

print(result_df)

输出结果

shape: (5, 2)
┌───────┬───────┐
│ group ┆ value │
│ ---   ┆ ---   │
│ str   ┆ i64   │
╞═══════╪═══════╡
│ a     ┆ 3     │
│ a     ┆ 2     │
│ a     ┆ 1     │
│ b     ┆ 5     │
│ b     ┆ 4     │
└───────┴───────┘

关键逻辑说明

  • .over("group"):指定操作的分组范围,让reverse()仅在同一个group内生效
  • .reverse():对列的原有顺序进行倒转(不是按值排序,完全保留分组内的原始元素顺序,只是整体反转)
  • 如果不想覆盖原value列,可以将alias("value")改为其他名称(比如alias("reversed_value")),这样会新增一列反转后的数据

内容的提问来源于stack exchange,提问作者N. Maks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:32:21