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

pandas groupby聚合拼接字符串时如何去除重复值

问题场景

使用pandas处理Excel数据时,按指定列分组后对文本列做拼接聚合,原始代码如下:

keep_the_same = ["foo", "bar"]
ones_to_sort = ["somethingelse", "something"]
out = df.groupby(keep_the_same)[ones_to_sort].agg(",".join).reset_index()

因原始数据不规范,聚合后的单元格存在重复内容,需要实现去重后再合并的效果。
对应问题示例:
重复内容示例1
重复内容示例2
重复内容示例3

实现方法

不需要改动原有分组逻辑,只需要把原来直接传字符串拼接的聚合逻辑,替换成先去重再拼接的自定义逻辑即可,代码改动极小:

keep_the_same = ["foo", "bar"]
ones_to_sort = ["somethingelse", "something"]
# 聚合时先对分组内的序列去重,再用中文逗号拼接
out = df.groupby(keep_the_same)[ones_to_sort].agg(
    lambda col: ",".join(col.drop_duplicates())
).reset_index()

如果原始数据里有空值/空字符串,不想把这些无效值拼到结果里,可以在去重前加一步过滤:

lambda col: ",".join(col.dropna().drop_duplicates())

如果觉得lambda表达式可读性差,也可以单独定义拼接函数传入:

def dedup_merge(col):
    # 过滤空值、去重后按原顺序拼接
    valid_items = col.dropna().drop_duplicates()
    return ",".join(valid_items)

out = df.groupby(keep_the_same)[ones_to_sort].agg(dedup_merge).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:36:20