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

Pandas删除高缺失率列时出现Series索引越界错误

解决删除高缺失率列时的IndexError问题

错误原因

你的循环代码会动态修改cosmos的列数,但循环范围是基于初始列数(也就是len(a)的初始值)。比如初始有7列,循环中删了一列后cosmos只剩6列,但循环还会按初始长度继续跑,当i取值到原列数对应的索引时,cosmos.columns[i]就超出了现有列的索引范围,触发IndexError。报错里提到的axis0,是因为访问cosmos.columns[i]时,这个索引针对的是columns序列的轴0,和drop指定的axis1无关。

正确解决方案

不要在循环中逐列删除,应该先一次性找出所有缺失率超过80%的列,再批量删除,彻底避免索引越界问题。

示例代码

# 计算每列的缺失率
missing_rates = cosmos.isna().sum() / len(cosmos) * 100
# 筛选出缺失率>80%的列名
cols_to_drop = missing_rates[missing_rates > 80].index
# 批量删除目标列
cosmos.drop(cols_to_drop, axis=1, inplace=True)

代码说明

  • 先计算所有列的缺失率,得到一个与原数据列一一对应的Series;
  • 通过布尔索引筛选出符合条件的列名;
  • 最后一次性删除所有目标列,全程不会在中途修改数据集结构,从根源避免了循环中的索引混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:26:14