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

求助:调用df正常但df[0]报KeyError:0的原因

为什么调用df[0]会报KeyError,而直接打印df却正常?

嘿,这个问题挺常见的,本质是你没搞清楚Pandas DataFrame里[]运算符的作用逻辑~

直接输入df能正常显示,是因为这只是输出整个数据帧的内容,不管它的列标签是什么。但df[0]的行为是按列标签(column label)查找对应的列,如果你的数据帧里根本没有名为0的列,自然就会抛出KeyError: 0了。

下面分几种常见场景给你解决办法:

1. 你想取第0列(按位置,不是按标签)

如果你的目标是获取数据帧中第一个位置的列,不管它的标签是什么,别用df[0],改用iloc(整数位置索引):

df.iloc[:, 0]  # 逗号前的`:`表示取所有行,逗号后的`0`表示取第0列

2. 你确实有列标签为0,但还是报错?

检查一下你的列标签类型是不是整数!有时候列标签可能是字符串类型的'0',而不是整数0。你可以先打印列标签看看:

print(df.columns)

如果输出里是Index(['0', '1'], dtype='object'),那你得用df['0']才能取到对应列。

3. 你其实想取第0行?

很多新手会搞混行和列的索引方式,df[0]默认是查列,不是查行。如果要取第一行,用这两种方式:

  • 按整数位置取:df.iloc[0]
  • 按行标签取(如果行标签是0的话):df.loc[0]

举个实际例子帮你理解:
假设你创建了这样的DataFrame:

import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [25, 30]})

这时候列标签是'name'和'age',所以df[0]会报错,但df.iloc[:, 0]能拿到name列的数据。

如果你的列标签是整数:

df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [25, 30]}, columns=[1, 2])

那df[1]能拿到name列,df[0]还是会报错,因为没有标签为0的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:07:53