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

Pandas drop_duplicates方法未按预期生效问题求助

解决pandas的drop_duplicates未删除重复行的问题

你遇到的情况是调用df.drop_duplicates(inplace=True)后,肉眼可见的重复行没被删除,核心原因大概率是浮点数精度差异——看起来数值完全相同的列,实际存储的二进制值有微小差别,导致pandas判定它们不是重复行。

验证问题

先确认这两行是否真的被pandas识别为重复:

# 查看所有被标记为重复的行
print(df[df.duplicated(keep=False)])

如果输出里没有那两行2023-05-01的数据,说明浮点数精度是问题根源。

解决办法

方法1:统一数值列的小数位数

对所有浮点数列进行四舍五入,消除微小精度差异:

# 选择所有浮点类型的列
float_cols = df.select_dtypes(include=['float64', 'float32']).columns
# 保留6位小数(可根据你的数据调整位数)
df[float_cols] = df[float_cols].round(6)
# 再次删除重复行
df.drop_duplicates(inplace=True)

方法2:手动指定重复判定的精度阈值

用numpy的isclose自定义重复判定逻辑:

import numpy as np

# 生成布尔掩码,标记与上一行完全接近的重复行
mask = np.all(np.isclose(df.to_numpy(), df.shift().to_numpy()), axis=1)
# 过滤掉重复行(保留第一行)
df = df[~mask]

方法3:规避inplace的潜在问题

有时候inplace参数可能因数据视图/副本的问题不生效,直接重新赋值更稳妥:

df = df.drop_duplicates()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:41:16