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

如何用Pandas基于OR条件删除Excel行?条件出错致全删求助

修复Pandas筛选时误删所有行的逻辑错误

你的问题出在逻辑运算符的误用上:

你原本想删除「既不是com也不是gov」的行,但代码里写的是(com != "com") | (com != "gov")——这个条件对所有行都成立:

  • 当值是com时,com != "gov"为真,整个条件为真
  • 当值是gov时,com != "com"为真,整个条件为真
  • 当值是org时,两个判断都为真,条件也为真

所以所有行都被标记为要删除,最终清空了整个DataFrame。

正确写法

把逻辑或|换成逻辑与&,表示「同时满足既不是com、也不是gov」的行才删除:

combinedMonthVulnDataFrame.drop(combinedMonthVulnDataFrame[(combinedMonthVulnDataFrame['com'] != "com") & (combinedMonthVulnDataFrame['com'] != "gov")].index, inplace = True)

更简洁的替代写法

用isin方法可以让代码更易读,直接保留指定值的行:

# 保留com和gov的行,直接筛选而非删除
combinedMonthVulnDataFrame = combinedMonthVulnDataFrame[combinedMonthVulnDataFrame['com'].isin(["com", "gov"])]
# 如果想用drop的方式,也可以这么写
combinedMonthVulnDataFrame.drop(combinedMonthVulnDataFrame[~combinedMonthVulnDataFrame['com'].isin(["com", "gov"])].index, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:23:11