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

如何基于多条件删除DataFrame行?代码报KeyError: 'fruit'求助

问题解决:删除DataFrame中指定列不符合条件的行

错误原因

你的drop语句逻辑完全错误:

  • 变量X已经是要删除的行的索引,但你后续写了faves.drop(faves[faves['fruit'] == X]),这里faves['fruit'] == X是把fruit列的字符串值和索引(通常是数字)做对比,生成的布尔序列完全不符合预期;而且drop方法如果传入DataFrame对象,会默认把它的列名当作要删除的列,这就导致程序尝试删除不存在的列(或逻辑混乱触发KeyError)。

正确写法

方法1:修正你原有的代码

直接用获取到的索引X执行删除操作:

X = faves[(faves['fruit'] != "apple") & (faves['fruit'] != "orange")].index
faves = faves.drop(X)

方法2:更简洁的筛选(推荐)

直接筛选出需要保留的行,代码直观易懂:

# 保留fruit列值为apple或orange的行
faves = faves[faves['fruit'].isin(['apple', 'orange'])]

方法3:用query语法(更简洁)

faves = faves.query("fruit in ['apple', 'orange']")

额外排查

如果还是出现KeyError: 'fruit',先确认你的DataFrame确实包含这个列,执行print(faves.columns)查看列名,检查是否有拼写错误(比如大小写、多打/少打字符)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:06:47