csv 即使列存在,也会发生KeyError

dgjrabp2  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(128)

我知道这个问题在这里被问了很多,但我一直在浏览其他问题,我没有找到任何使用.csv文件的问题。
下面是我的CSV文件:

Survived, Pclass, Sex, Age, Siblings, Parents, Fare  
0, 3, male, 22.0, 1, 0, 7.25  
1, 1, female, 38.0, 1, 0, 71.2833  
1,3,female, 26.0, 0, 0, 7.925  
1, 1, female, 35.0, 1, 0, 53.1

我的代码是:

import pandas as pd  
df = pd.read_csv("titanic.csv")  
print(df)  
print(df.columns)  
print(df["Pclass"])

我的代码的第3行和第4行工作得很好,所以第二行或csv文件本身可能没有问题,对吗?第5章哪里出错了这是错误消息:

奇怪的是,当我尝试使用文件中的第一个标题“Survived”执行第5行时,它可以工作。只有其他标题才会出现此错误。我使用的是Python 3.7.1版和pandas 1.0.3版。

aamkag61

aamkag611#

read_csv中的默认逗号是逗号(,)。CSV文件使用逗号和空格(,)。您需要显式地指定此参数:

df = pd.read_csv("titanic.csv", sep=', ')
atmip9wb

atmip9wb2#

另一种strip()列的方法如下所示,这样就可以删除空格。

print(df)  
print(df.columns)  
df.rename(columns=lambda x: x.strip(), inplace=True)
print(df["Pclass"])
ghhkc1vu

ghhkc1vu3#

这是因为在列名旁边有空格。列不是Pclass而是Pclass
检查这个:

print(df[" Pclass"])

如果您想将列名称从白色空间中去掉,可以这样做。

df.rename(columns={c: c.strip() for c in df.columns}, inplace=True)

相关问题