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

为何我的Pandas DataFrame无法删除重复值?

Pandas去重无效/返回空DataFrame的解决办法

先解决inplace=True导致空DataFrame的问题

你大概率是写了这种错误代码:

salaries = salaries.drop_duplicates(inplace=True)

inplace=True时,drop_duplicates会直接修改原DataFrame,返回值是None,把这个None赋值给salaries就会导致变量变成空(实际是None)。正确用法二选一:

  • 方式1:不使用inplace,赋值保存结果
    salaries = salaries.drop_duplicates()
    
  • 方式2:使用inplace,不赋值
    salaries.drop_duplicates(inplace=True)
    

解决drop_duplicates()未移除重复值的问题

既然你用salaries[salaries.duplicated(keep=False)]找到了34条重复行,按道理drop_duplicates应该能生效,试试下面的排查步骤:

  1. 确认重复行的真实性
    打印重复行的具体内容,检查是否有隐藏的差异(比如字符串前后空格、数据类型不一致):

    print(sal_dupes.head())
    # 统一清理字符串列的空格
    for col in salaries.select_dtypes(include=['object']).columns:
        salaries[col] = salaries[col].str.strip()
    
  2. 显式指定去重的列范围
    明确告诉Pandas要检查所有列的重复(避免默认参数的潜在问题):

    salaries = salaries.drop_duplicates(subset=salaries.columns, keep='first')
    
  3. 重置索引(可选)
    去重后索引可能不连续,重置索引避免后续操作异常:

    salaries = salaries.reset_index(drop=True)
    
  4. 验证去重结果
    执行完去重后,再检查重复行数量:

    remaining_dupes = salaries[salaries.duplicated(keep=False)]
    print(len(remaining_dupes))  # 正常应该返回0
    

内容的提问来源于stack exchange,提问作者R.Harg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:55:20