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

pandas调用drop()删除DataFrame行触发KeyError自索引报错怎么办

报错产生原因
  • 核心问题是drop()方法的传参写错了:你写的df.drop(df[student_num])里,df[student_num]的作用是取DataFrame中列名等于student_num(当前值为15)的整列数据,根本不是传入要删除的行标识,pandas找不到名为15的列,就会抛出KeyError: 15。
  • 额外的潜在风险:从CSV读取的DataFrame如果之前做过行筛选、删除操作,默认生成的整数索引可能存在断档,你以为的行号不一定等于DataFrame实际存储的索引标签,直接传值删行容易删错或者报找不到索引。
正确行删除实现方式

根据student_num的实际含义选对应写法即可:

  1. 如果student_num是df.index中实际存在的索引标签值,直接给drop传要删除的标签,指定按行删除即可:
df = df.drop(labels=student_num, axis=0)
  1. 如果student_num是你看到的行位置序号(比如打印df时从上往下数的行号,从0开始计数),或者不确定索引是否连续,通过索引下标定位要删除的行更稳妥:
df = df.drop(df.index[student_num], axis=0)

优化提示:如果你的需求是替换指定行的全量值,不需要走「生成新行-删旧行-追加新行」的流程,直接按索引定位赋值即可,比如df.loc[目标索引] = 存储正确值的列表/Series,能减少索引操作带来的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:03:24