读取管道分离的CSV后获取KeyError

时间:2018-05-20 01:30:31

标签: python python-3.x pandas csv

我用像这样的管道分隔的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']不在索引

我不明白出了什么问题 - 当我打印头时,我可以看到CSV中的值,同样当我打开CSV时,一切看起来都很好。

我已经尝试谷歌并在堆栈上阅读有关此问题的一些帖子并尝试了不同的方法,但似乎没有什么能解决这个烦人的问题。

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分: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