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

如何用DataFrame.drop()移除DataFrame中activity列的77、99标签?

解决KeyError:移除DataFrame中activity列值为77、99的行

你触发KeyError的原因很明确:df.drop(axis=0, index=["77","99"])是按行索引(index)删除行,但你实际要删除的是activity列中值为77、99的行,不是行索引等于77、99的行,自然找不到对应索引报错。

下面是几种正确的解决方案:

方法1:布尔索引筛选(最常用)

直接筛选出activity列值不在[77,99]范围内的行:

df2 = df[~df['activity'].isin([77, 99])]
  • 说明:isin([77,99])会标记出activity列值为77或99的行,~符号表示取反,最终保留符合要求的行。注意这里用数字77、99,不是字符串,因为你的activity列存储的是数值类型。

方法2:先获取待删行索引再删除

如果需要明确知道要删除的行索引,可以先提取索引再执行删除:

# 获取activity列值为77或99的行索引
drop_indices = df[df['activity'].isin([77, 99])].index
# 根据索引删除行
df2 = df.drop(drop_indices)

方法3:用query语法简化筛选

如果你喜欢更简洁的写法,可以用query方法:

df2 = df.query('activity not in [77, 99]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:32:36