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

Pandas中DataFrame.duplicated()返回异常结果求助

问题分析与解决方法

你没误解duplicated()的逻辑,它的默认行为是这样的:

duplicated()默认参数为keep='first',作用是标记当前行在整个列的前面部分已经出现过的重复项,而非判断当前行与相邻行、或你截取的切片内是否存在重复。你看到155071-155075行被标记为True,是因为这些行的内容在DataFrame的前155070行中已经出现过,并非在你截取的这段切片里重复。

正确排查重复并避免误删的方法:

  • 要查看所有重复行(包括首次出现的原版和后续重复的副本),执行以下代码:
    x[x['comment'].duplicated(keep=False)]
    
    这样就能看到每一组重复的完整内容,定位出标记为True的行到底和前面哪一行重复。
  • 若担心存在肉眼不可见的差异(比如首尾空格、换行符、特殊编码字符),可先对列做清洗处理:
    x['comment'] = x['comment'].str.strip()  # 去除字符串首尾空白字符
    
    再重新运行duplicated()检查。
  • 按需使用drop_duplicates():
    • 保留每一组重复的首次出现行:用默认的x.drop_duplicates(subset='comment')
    • 保留每一组重复的最后出现行:x.drop_duplicates(subset='comment', keep='last')
    • 删除所有重复组(无论首次还是后续出现):x.drop_duplicates(subset='comment', keep=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:55:16