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

Python处理DataFrame列重复字符串(保留长文本)的代码错误排查

问题排查与修复

现有代码的错误点

  • 变量名拼写错误:else分支中使用st.append(candidate),但你定义的结果列表变量名为lst,所有新增条目都存入了不存在的变量,直接导致最终结果缺失元素。
  • 遍历过程中修改列表:在for existing in lst的循环里同步执行remove/append操作,会打乱列表的遍历索引,导致元素漏判、逻辑异常。
  • 未预处理拆分后的字符串:从运行输出可以看到,拆分后的候选值携带了多余的方括号、引号、前后空格,比如第一个候选为"['university of washington bachelor of science'",第二个候选为" 'university of washington'",冗余符号导致字符串包含判断完全失效,本来存在包含关系的字符串被判定为无关。
  • 单次比对即执行操作:每和一个已有元素比对就执行添加/删除,无法覆盖所有已有元素的判断场景,还会出现重复添加的问题。

修复方案

推荐改用更稳妥的判断逻辑:先清理所有候选字符串的冗余符号,再逐个判断每个候选是否被其他候选包含,仅保留不被任何其他候选包含的条目,实现代码如下:

def filter_unique_str(raw_str):
    # 拆分后清理每个元素的多余括号、引号、前后空格
    candidates = [item.strip(" []'\"") for item in raw_str.split(',')]
    result = []
    for cur in candidates:
        need_keep = True
        for other in candidates:
            if cur == other:
                continue
            # 当前字符串被其他字符串包含,直接丢弃
            if cur in other:
                need_keep = False
                break
        if need_keep:
            result.append(cur)
    return result

# 批量处理DataFrame的UNIVERSITY列
df['cleaned_university'] = df['UNIVERSITY'].apply(filter_unique_str)

拿你的示例测试,处理后得到的结果为['university of washington bachelor of science', 'information school undergraduate researcher'],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:05