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

Pandas访问ID列报不在索引、iloc[:,0]返回异常问题咨询

故障原因

你视觉上看到的ID不是DataFrame的普通数据列,是行索引的名称,因此按列名选取时会触发不存在的报错。
核心判断依据来自你执行df.iloc[:, 0]返回的Series结果:

  • 结果最顶部显示的ID是这个Series行索引的名称,对应原DataFrame的行索引名
  • 结果末尾标注的Name: NUMBER才是你取到的第一列的真实列名

pandas打印DataFrame时会把行索引放在所有数据列的最左侧,和普通数据列视觉上相邻,很容易被误认成列。你可以执行print(df.columns)查看所有真实存在的列名,执行print(df.index.name)就能验证行索引的名称确实是ID。

解决方案

根据你的合并场景二选一即可:

  • 需要把ID作为普通列使用时,先把行索引转为数据列再选取,参考代码如下:
# 将名为ID的行索引转换为普通数据列
df = df.reset_index()
# 后续选取列就不会报错,注意列名要和实际大小写一致,你的数值列真实列名为NUMBER
df2 = df[['ID', 'NUMBER']]
  • 如果做合并操作时只是需要用ID作为匹配键,不需要额外转列,直接在pd.merge()里设置对应参数即可:如果当前表用ID索引做匹配键,就加left_index=True,另一张表如果也是用ID当索引就加right_index=True,如果另一张表ID是普通列就设置right_on='ID'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:39:37