读取竖线分隔CSV后提取列触发KeyError问题求助
解决KeyError: ['Alpha3Code'] not in index问题
我来帮你搞定这个问题!你遇到的报错本质是pandas没有正确解析你的竖线分隔CSV文件,导致列名完全不符合预期。
问题根源
你调用pd.read_csv()时没有指定分隔符,pandas默认用逗号,作为分隔符,但你的CSV是用竖线|分隔的。这就导致pandas把整个第一行(包括所有列名和竖线、引号)当成了单个列名,后面的每一行也都被识别成单个列的值。所以你的DataFrame其实只有一列,自然找不到Alpha3Code这个列索引。
解决方案
读取CSV时明确指定分隔符为竖线|,同时因为你的列名和值都被双引号包裹,加上quotechar='"'参数来正确处理引号:
import pandas as pd # 修正后的读取代码 test = pd.read_csv("http://kejser.org/wp-content/uploads/2014/06/Country.csv", sep='|', quotechar='"') test.head()
验证效果
执行上述代码后,你可以用test.columns查看列名,会看到正确的列索引:SK_Country, Number, Alpha2Code, Alpha3Code, CountryName, TopLevelDomain。这时候再执行df = test[["Alpha3Code"]]就能成功提取指定列了!
内容的提问来源于stack exchange,提问作者user9807244
相关产品推荐
相关产品推荐

