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

Polars是否存在按前缀匹配折叠列至结构体的内置功能?

Polars按前缀折叠列为结构体的内置实现方式

Polars提供了更简洁的内置分组聚合能力来实现这种按前缀折叠列的需求,无需手动逐个指定列构建结构体。

实现代码

import polars as pl
pl.Config(tbl_cols=10)
schema = ['x-latest', 'x-mean', 'x-std', 'y-latest', 'y-mean', 'y-std', 'z-latest', 'z-mean', 'z-std']
df = pl.DataFrame([range(n, n + 3) for n in range(0, 27, 3)], schema=schema)

# 按列名前缀分组并折叠为结构体
result = df.select(
    pl.col("*")
    .group_by(lambda col_name: col_name.split("-")[0])
    .agg(pl.struct(pl.all()).name.map(lambda prefix: f"{prefix}-stats"))
)

print(result)

代码解释

  • pl.col("*"):选中DataFrame的所有列
  • group_by(lambda col_name: col_name.split("-")[0]):通过列名分割后的前缀(x/y/z)对列进行分组
  • agg(pl.struct(pl.all())):将每组内的列聚合为一个结构体,再通过name.map把结构体列重命名为{prefix}-stats格式

这种方式的优势在于无需提前维护前缀列表,后续新增同格式前缀的列(如w-latest、w-mean等)时,代码会自动适配,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:57:02