如何在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
相关产品推荐
相关产品推荐

