You need to enable JavaScript to run this app. 迭代DataFrame行时报KeyError: '61',如何删除patient列为数字的行
优惠活动
大模型
产品
解决方案
定价
更多

迭代DataFrame行时报KeyError: '61',如何删除patient列为数字的行

错误原因
  • 你循环遍历得到的i是patient列的取值,不是行索引,直接用df['patient'][i]是把列值当成索引去取对应行,当列值为61但你的DataFrame没有名为61的索引时,自然抛出KeyError
  • 循环中直接修改DataFrame会导致索引动态偏移,既容易删错行,执行效率也很低
  • df.drop()的入参需要是要删除的行索引/列名,你传入的是匹配到的行内容,参数格式本身也不正确
正确实现方案

优先用pandas向量化操作实现,不需要写循环:
如果patient列是字符串类型,直接用str.isdigit()判断是否为纯数字,取反后筛选保留不符合删除条件的行即可:

# 直接筛选保留非纯数字的行,效率最高
df = df[~df['patient'].str.isdigit().fillna(False)]

如果需要用drop方法显式删除符合条件的行也可以:

# 显式drop对应行
drop_index = df[df['patient'].str.isdigit().fillna(False)].index
df = df.drop(drop_index)

上面的fillna(False)是为了处理patient列有空值的情况,避免判断时报错,如果确认列内没有空值可以去掉。

如果patient列存在混合类型(既有字符串又有整数),需要先统一转成字符串再判断:

df = df[~df['patient'].astype(str).str.isdigit()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 08:12:00