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

处理2021年Excel数据报single positional indexer is out-of-bounds错误求助

错误原因
  • 核心原因是执行AE_team.iloc[5,0]取第6行第1列(pandas索引从0开始计数)、AE_team.iloc[0,5]取第1行第6列时,2021年的部分Excel文件读取后生成的DataFrame行数不足6行,或列数不足6列,触发位置索引越界错误。
  • 2020年文件可正常运行说明2021年的Excel格式做了调整:比如表头行数变动、空行被删除、有效数据列数减少,也可能是你选择的文件列表里混进了空Excel、非业务数据的Excel,或是读取到了文件里的空白sheet。
  • 你代码中注释掉的header=3参数也可能是诱因:2020年处理时是从第4行开始作为表头读取,2021年你去掉了该参数直接全量读取,导致有效数据的位置偏移,对应索引位置无数据。
解决办法
  • 先加调试代码定位异常文件,同时先做索引合法性判断再取值,避免程序直接崩溃:
AE_cor = pd.DataFrame()
global fnames
for i in fnames: 
    # 打印当前处理文件信息排查问题
    print(f"当前处理文件:{i}")
    AE_team = pd.read_excel(f'{i}')
    print(f"文件行数:{AE_team.shape[0]},文件列数:{AE_team.shape[1]}")
    # 先判断索引是否在合法范围内再取值
    if AE_team.shape[0] >= 6 and AE_team.shape[1] >= 6:
        team = AE_team.iloc[5,0]
        date = AE_team.iloc[0,5]
    else:
        print(f"文件{i}结构不符合要求,跳过处理")
        continue
  • 确认2021年Excel的表头规则,如果和2020年一致都是从第4行开始作为表头,把注释掉的header=3参数加回read_excel方法中,保证读取后的数据位置和2020年对齐。
  • 如果2021年的字段位置有调整,不要使用固定位置的iloc取值,换成按列名取值(比如AE_team['团队列名'].iloc[0]),兼容性更高。
  • 读取Excel时可以指定sheet名称,避免部分Excel默认读取到空白sheet、汇总sheet,导致读取的数据集为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:48:01