读取以管道分隔的CSV文件后出现KeyError错误

3

我会读取像这样的以管道符分隔的CSV文件

test = pd.read_csv("http://kejser.org/wp-content/uploads/2014/06/Country.csv")
test.head()

这将返回

  SK_Country|"Number"|"Alpha2Code"|"Alpha3Code"|"CountryName"|"TopLevelDomain"
0                    1|20|"ad"|"and"|"Andorra"|".ad"                          
1                 2|4|"af"|"afg"|"Afghanistan"|".af"                          
2        3|28|"ag"|"atg"|"Antigua and Barbuda"|".ag"                          
3                  4|660|"ai"|"aia"|"Anguilla"|".ai"                          
4                     5|8|"al"|"alb"|"Albania"|".al"

当我尝试从中提取特定数据时,比如以下内容:
 df = test[["Alpha3Code"]]

我遇到了以下错误:

KeyError: ['Alpha3Code'] not in index

我不明白出了什么问题 - 当我打印头部时,我可以看到该值在CSV中,同样当我打开CSV时,一切都看起来很正常。
我已经尝试谷歌搜索并阅读了关于此问题的一些帖子,并尝试了不同的方法,但似乎没有解决这个烦人的问题。

当你读入时,可能需要指定一个分隔符。 - user3483203
嗨,克里斯,感谢您的快速回答,但您能具体说明一下您的答案吗?我是 Python 的新手,所以不太清楚您的意思。 - user9807244
1
Miradulo的回答解释了它。 - user3483203
2个回答

1
请注意,所有内容都被压缩到一个字符串列中。这是因为您没有指定分隔列的分隔符给 pd.read_csv,在这种情况下必须使用 '|'
test = pd.read_csv("http://kejser.org/wp-content/uploads/2014/06/Country.csv", 
                   sep='|')
test.head()

#    SK_Country  Number Alpha2Code Alpha3Code          CountryName  \
# 0           1      20         ad        and              Andorra   
# 1           2       4         af        afg          Afghanistan   
# 2           3      28         ag        atg  Antigua and Barbuda   
# 3           4     660         ai        aia             Anguilla   
# 4           5       8         al        alb              Albania   
# 
#   TopLevelDomain  
# 0            .ad  
# 1            .af  
# 2            .ag  
# 3            .ai  
# 4            .al 

谢谢miradulo,那很有道理,我不知道我需要这样做,但拆分它是非常明智的选择。我会将您的回复标记为答案。 - user9807244

0

正如@chrisz在评论中指出的那样,您必须指定分隔符:

test = pd.read_csv("http://kejser.org/wp-content/uploads/2014/06/Country.csv",delimiter='|')
test.head()
SK_Country  Number Alpha2Code Alpha3Code          CountryName  \
0           1      20         ad        and              Andorra   
1           2       4         af        afg          Afghanistan   
2           3      28         ag        atg  Antigua and Barbuda   
3           4     660         ai        aia             Anguilla   
4           5       8         al        alb              Albania   

  TopLevelDomain  
0            .ad  
1            .af  
2            .ag  
3            .ai  
4            .al  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接