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

Pandas删除Judge列值为WITHDRAWN的行时遇KeyError问题求助

问题分析与解决方案

第一个错误的原因

你这段代码存在两个问题:

adversary_df = adversary_df.drop(adversary_df[adversary_df['Judge'] == 'WITHDRAWN'], axis = 0, inplace = True)
  • drop方法的第一个参数如果传入整个DataFrame,pandas会误把这个DataFrame的列名当成要删除的列标签(即使指定了axis=0),所以它会去找['Client No.', 'Defendant/Municipality', 'Judge']这些列,自然找不到,触发KeyError。
  • 同时使用inplace=True和赋值是错误的:inplace=True会让drop直接修改原DataFrame,返回None,此时adversary_df = ...会把变量覆盖成None,后续操作必然报错。

第二个错误的原因

这段代码的问题在于loc的用法完全错误:

adversary_df = adversary_df.loc([:,'WITHDRAWN'], axis = 0)
  • loc的调用必须用方括号[],不是圆括号()。
  • loc[:, 'WITHDRAWN']的语义是「选择所有行,列名为'WITHDRAWN'的列」,但你的DataFrame里没有这个列,只有Judge列,所以触发KeyError。你需要的是筛选行,应该把行的条件放在loc的第一个位置。

正确的实现方法

这里提供两种简单可靠的方式:

方法1:布尔索引直接筛选(推荐新手使用)

直接保留Judge列不等于'WITHDRAWN'的行:

adversary_df = adversary_df[adversary_df['Judge'] != 'WITHDRAWN']

方法2:正确使用drop方法

如果想用drop,需要传入符合条件的行的索引,而不是整个DataFrame:

# 不使用inplace,返回新的DataFrame赋值给原变量
adversary_df = adversary_df.drop(adversary_df[adversary_df['Judge'] == 'WITHDRAWN'].index, axis=0)

# 或者使用inplace,此时不需要赋值
adversary_df.drop(adversary_df[adversary_df['Judge'] == 'WITHDRAWN'].index, axis=0, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:35:05