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

使用pandas drop_duplicates指定列去重未完全生效问题求助

Pandas drop_duplicates未彻底清除重复项的排查与解决

给你几个实际场景里容易踩的坑和解决办法:

  • 隐性字符差异:目标列的字符串可能带前后空格、大小写不一致,肉眼看着相同但程序会判定为不同值。先统一处理文本列:

    # 去除空格+统一大小写(针对文本类列)
    df['Anonymized_ID'] = df['Anonymized_ID'].astype(str).str.strip()
    df['COURSE'] = df['COURSE'].astype(str).str.strip().str.lower()
    df['GRADE'] = df['GRADE'].astype(str).str.strip()
    

    处理完成后再执行drop_duplicates。

  • 数据类型不统一:比如GRADE列里同时存在整数和字符串(如85和"85"),这类值会被判定为不同。先检查列的类型:

    print(df[['Anonymized_ID', 'COURSE', 'GRADE']].dtypes)
    

    发现类型不一致时,统一转换为相同类型(比如全转成字符串或数值型)。

  • 浮点数精度问题:如果GRADE是浮点数,可能存在看似相同但精度有细微差异的情况(如85.0和85.0000001)。可以对浮点数列做四舍五入处理:

    df['GRADE'] = df['GRADE'].round(2)
    
  • 列名拼写错误:确认subset参数里的列名和DataFrame实际列名完全一致(包括大小写、下划线),比如把Anonymized_ID写成Anonymized_Id的话,subset参数相当于未生效,去重会按整行判断,自然达不到预期效果。

另外,建议先验证哪些行被判定为重复,用以下代码可以显示所有重复行,方便定位问题:

# 显示所有被标记为重复的行
print(df[df.duplicated(subset=['Anonymized_ID', 'COURSE', 'GRADE'], keep=False)])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:05:17