即使列存在,也会发生KeyError

2024-10-01 22:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个问题在这里被问了很多,但我一直在看其他问题,我没有发现任何使用.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文件本身可能没有问题,对吗?第五行就是出错的地方。这是错误消息: This is the error message.

奇怪的是,当我尝试在第5行中使用文件中的第一个标题“Survived”时,它起作用了。只有在其他标题中才会出现此错误。 如果有帮助的话,我正在使用Python版本3.7.1和pandas版本1.0.3


Tags: 文件csv代码版本标题pandasdfage
3条回答

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

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

这是因为列名旁边有空格。您的列不是Pclass,而是Pclass

选中此项:

print(df[" Pclass"])

如果要将列名从空白中删除,可以这样做

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

另一种方法是strip()您的列,如下所示,这样它将删除空白

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

相关问题 更多 >

    热门问题