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

Pandas两种条件删行方法是否等效?为何第一种删多了?

两种删除DataFrame行方法的差异分析

这两种方法在索引唯一的前提下功能完全一致,都是保留AE列不等于"X"的行;但如果DataFrame存在重复索引,第一种方法会出现误删,导致删除行数超出预期。

问题根源

  • 第一种方法df.drop(df[df.AE == "X"].index):通过索引删除行。如果索引有重复,只要某索引出现在df.AE == "X"的结果中,所有对应该索引的行都会被删除——哪怕其中有些行的AE值并不是"X"。
  • 第二种方法df[df["AE"] != "X"]:通过布尔索引直接筛选行,只保留AE值不等于"X"的记录,不受索引是否重复的影响,不会误删。

验证与解决

  1. 检查是否存在重复索引:
print(df.index.duplicated().any())

如果返回True,说明索引重复是第一种方法出错的原因。

  1. 修正第一种方法的思路:
    • 先重置索引为唯一值,再执行删除:
      df = df.reset_index(drop=True)
      df = df.drop(df[df.AE == "X"].index)
      
    • 更推荐直接使用第二种布尔索引的写法,逻辑直观且不易出错。

内容的提问来源于stack exchange,提问作者Hélio dos Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:24:04