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

Python-Polars中Group By后如何拼接去重字符串?

在Polars DataFrame分组时拼接并去重列字符串值的方法

要实现分组后对指定列的字符串进行去重拼接,直接使用Polars内置的str.concat_distinct()聚合函数即可,它会自动完成分组内的去重与拼接操作。

完整实现代码

import polars as pl

# 构造示例DataFrame
df = pl.DataFrame(
    {
        "col1": ["a", "b", "a", "b", "c"],
        "col2": ["val1", "val2", "val1", "val3", "val3"]
    }
)

# 分组聚合:对col2去重后拼接
result_df = df.group_by("col1").agg(
    pl.col("col2").str.concat_distinct(separator=",").alias("col2_g")
)

print(result_df)

输出结果

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

关键逻辑说明

  • group_by("col1"):按col1列的值进行分组
  • pl.col("col2").str.concat_distinct(separator=","):针对每组的col2列,先自动去重重复的字符串值,再用指定分隔符(此处为逗号)拼接成单个字符串
  • .alias("col2_g"):为聚合后的列重命名,提升结果可读性

扩展:带排序的去重拼接

如果需要对去重后的字符串先排序再拼接,可以结合unique()和str.concat()实现:

result_df = df.group_by("col1").agg(
    pl.col("col2").unique().sort().str.concat(separator=",").alias("col2_g")
)

这种写法适合需要控制拼接顺序的场景,输出结果会保持排序后的字符串顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:57:26