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

使用Pandas触发IndexingError: Too many indexers报错,求解决方案

问题解决:Pandas报错"too many indexers"及大数据集优化方案

错误原因

  1. 变量名冲突:循环中for i, df in df.iterrows()把迭代得到的单行Series覆盖了原DataFrame对象df,后续df.at[1,'Runner']实际是对单行Series调用at方法,但Series的at仅接受单个索引参数,传入两个参数就触发"too many indexers"错误。
  2. 效率问题:用iterrows()遍历大型数据集效率极低,Pandas原生矢量化操作才是最优选择。

修正方案(推荐矢量化操作)

直接用布尔索引批量更新,代码简洁且处理大数据集速度极快:

import pandas as pd

userlist = ['Smith', 'Clark']
df = pd.read_csv("sample.csv")

# 筛选Last Name在指定列表中的行,批量更新Runner列为Yes
df.loc[df['Last Name'].isin(userlist), 'Runner'] = 'Yes'

原代码的其他问题说明

就算把循环变量名改成row(比如for i, row in df.iterrows()),逐行更新的方式在大数据集下也会因为循环开销导致运行缓慢,远不如上述矢量化方法高效。另外注意你的CSV表头里Frist Name是拼写错误,正确应为First Name,虽不影响代码运行,但建议修正避免后续混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:00:59