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

Python中Polars分组聚合时如何拼接组内字符串?

Polars分组聚合时跨行拼接字符串的正确方法

在Polars DataFrame中执行group_by分组聚合,需将每组内指定列的字符串值跨行拼接,示例DataFrame如下:

import polars as pl
df = pl.DataFrame(
    {
        "col1": ["a", "b", "a", "b", "c"],
        "col2": ["val1", "val2", "val1", "val3", "val3"]
    }
)

原DataFrame形态:

shape: (5, 2)
┌──────┬──────┐
│ col1 ┆ col2 │
│ ---  ┆ ---  │
│ str  ┆ str  │
╞══════╪══════╡
│ a    ┆ val1 │
│ b    ┆ val2 │
│ a    ┆ val1 │
│ b    ┆ val3 │
│ c    ┆ val3 │
└──────┴──────┘

期望通过分组聚合得到如下结果:

┌──────┬───────────┐
│ col1 ┆ col2_g    │
│ ---  ┆ ---       │
│ str  ┆ str       │
╞══════╪═══════════╡
│ a    ┆ val1,val1 │
│ b    ┆ val2,val3 │
│ c    ┆ val3      │
└──────┴───────────┘

正确写法

对应的聚合函数是list.join,完整代码如下:

df.group_by('col1').agg(
    col2_g = pl.col('col2').list.join(',')
)

无效方法说明

  • pl.col('col2').list.concat(','):list.concat用于拼接多个列表对象,而非将列表元素转为字符串拼接,参数应为列表而非分隔符
  • pl.col('col2').join(','):join是Series级别的横向字符串拼接方法,不适用分组后的多行聚合场景
  • 若你执行pl.col('col2').list.join(',')无效,大概率是Polars版本过低,建议升级到0.17.0及以上版本,该版本正式引入了list.join方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:45:18