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

pandas按过滤条件删除DataFrame行时报KeyError,求正确操作方法

pandas按过滤条件删除DataFrame指定行的解决方案

错误原因

触发报错的核心原因有两个:

  • 语法错误:过滤条件左侧缺失方括号,括号不匹配
  • 逻辑错误:df.drop()方法默认接收的是待删除的行索引标签/列名,不能直接传入布尔掩码,pandas会将布尔值当成索引去匹配,找不到对应索引就会抛出KeyError

正确写法

方案1:反向筛选(最常用,性能更优)

直接通过布尔索引保留不需要删除的行,不需要调用drop方法,支持赋值给新变量或覆盖原变量:

# 写法1:用取反运算符排除符合删除条件的行
df = df[~(df['Year_Map'] == 2021)]
# 写法2:直接写不等于判断,逻辑更直观
df = df[df['Year_Map'] != 2021]

如果需要保留原数据不被覆盖,只要把结果赋值给新变量即可:

new_df = df[df['Year_Map'] != 2021]

方案2:使用drop方法实现

如果一定要用drop方法,需要先提取符合删除条件的行的索引,再传给drop:

# 原地修改原DataFrame
df.drop(df[df['Year_Map'] == 2021].index, axis=0, inplace=True)

多条件删除注意事项

如果是多个过滤条件组合删除,每个条件需要用小括号包裹,用&(且)、|(或)连接,示例:

# 删除Year_Map为2021 且 销售额大于1000的行
df = df[~((df['Year_Map'] == 2021) & (df['sales'] > 1000))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:03