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

Python 即使列存在,也会发生KeyError,python,pandas,csv,indexing,keyerror,Python,Pandas,Csv,Indexing,Keyerror,我知道这个问题在这里被问了很多,但我一直在看其他问题,我没有发现任何使用.csv文件的问题 这是我的csv文件: 我的代码是: import pandas as pd df = pd.read_csv("titanic.csv") print(df) print(df.columns) print(df["Pclass"]) 我的代码的第3行和第4行工作得很好,所以第二行或csv文件本身可能没有问题,对吗?第五行就是出错的地方。这是错误消息: 奇怪的是,当我尝试在第5行中使用

我知道这个问题在这里被问了很多,但我一直在看其他问题,我没有发现任何使用.csv文件的问题

这是我的csv文件:

我的代码是:

import pandas as pd  
df = pd.read_csv("titanic.csv")  
print(df)  
print(df.columns)  
print(df["Pclass"])
我的代码的第3行和第4行工作得很好,所以第二行或csv文件本身可能没有问题,对吗?第五行就是出错的地方。这是错误消息:

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

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

df=pd.read_csv(“titanic.csv”,sep=”,“)
另一种方法是
strip()
您的列,如下所示,这样它将删除空白

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

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

选中此项:

print(df[" Pclass"])
如果要将列名从空白中删除,可以这样做

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

您的列名前面有一个空格<代码>打印(df[“Pclass”])在您的问题中包括
打印(df.columns)
的输出。你可能会看到一些额外的空白需要修改。非常感谢你,我想它现在已经修复了!这是一个如此简单的解决方案。
df.rename(columns = {c: c.strip() for c in df.columns}, inplace = True)