为何我的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应该能生效,试试下面的排查步骤:
确认重复行的真实性
打印重复行的具体内容,检查是否有隐藏的差异(比如字符串前后空格、数据类型不一致):print(sal_dupes.head()) # 统一清理字符串列的空格 for col in salaries.select_dtypes(include=['object']).columns: salaries[col] = salaries[col].str.strip()显式指定去重的列范围
明确告诉Pandas要检查所有列的重复(避免默认参数的潜在问题):salaries = salaries.drop_duplicates(subset=salaries.columns, keep='first')重置索引(可选)
去重后索引可能不连续,重置索引避免后续操作异常:salaries = salaries.reset_index(drop=True)验证去重结果
执行完去重后,再检查重复行数量:remaining_dupes = salaries[salaries.duplicated(keep=False)] print(len(remaining_dupes)) # 正常应该返回0
内容的提问来源于stack exchange,提问作者R.Harg
相关产品推荐
相关产品推荐

