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

Pandas分组聚合去重拼接报错:AttributeError问题排查与解决

问题解答

错误原因

你写的代码逻辑顺序完全颠倒:'; '.join(el for el in x if el !='')会先把非空值拼接成一个字符串,之后你试图调用字符串的.set(x)方法——但字符串根本没有set属性,这就是报错的直接原因。而且就算语法正确,先拼接再去重也完全不符合需求,因为拼接后的字符串是整体,无法实现元素级的去重。

修正代码

要实现「非空值过滤→去重→拼接」的正确流程,分两种场景处理:

场景1:不关心去重后元素的顺序

直接用set去重,先过滤空值再去重拼接:

test = df.groupby('Group', as_index=True).agg(
    lambda x: '; '.join(set(el for el in x if el != ''))
)

场景2:需要保留元素首次出现的顺序

如果要维持原数据中元素的出现顺序,用dict.fromkeys实现有序去重(Python 3.7+中字典默认保留插入顺序):

test = df.groupby('Group', as_index=True).agg(
    lambda x: '; '.join(dict.fromkeys(el for el in x if el != ''))
)

补充:处理NaN空值

如果DataFrame中的空值是NaN而非空字符串,把判断条件改成pd.notna(el):

import pandas as pd
test = df.groupby('Group', as_index=True).agg(
    lambda x: '; '.join(dict.fromkeys(el for el in x if pd.notna(el)))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:54:21