我正在使用一个包含西班牙各省人口统计信息的数据集,其名称具有á,é,í等特殊字符。对于这些字符的编码部分,我很难过,感谢您能为我提供的任何帮助。
首先,我发现我的数据集以“ latin-1”编码,因此我相应地加载了该数据集,并寻找了一个具有特殊字符的省份:
Population=pd.read_csv('Population.csv',sep='\t',encoding='latin1')
Name_0=Population.iloc[600]['Provincias']
print Name_0, type(Name_0)
这是我的输出:
Málaga <type 'unicode'>
现在,我的问题是我找不到解决数据集中有关“马拉加”的人口统计信息的方法,因为它的名称上带有特殊字符“á”。也就是说,如果我尝试这样做:
Test_0=Population[ Population['Provincias']==u"Málaga"]
我收到此错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 1: ordinal not in range(128)
因此,我尝试查看如果我用latin-1编码省名会发生什么:
Name_1=Name_0.encode('latin-1')
Test_1=Population[ Population['Provincias']==Name_1]
但是我得到一个空的数据框和一个警告,我不太了解:
/home/sergio/anaconda2/lib/python2.7/site-packages/pandas/core/ops.py:1603: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
result = libops.scalar_compare(x, y, op)
Empty DataFrame
Columns: [Provincias, Year, Total]
Index: []
因此,从本质上讲,如果省份名称上带有特殊字符,我将无法使用省份的原始名称来访问信息,而且我不知道为什么会这样。 有人知道我该如何解决这个问题?
编辑: 我在ubuntu 18和emacs上使用python 2进行编码。 另外,这是我的数据集示例:
Provincias Year Total
598 Madrid 2001 5.372.433
599 Madrid 2000 5.205.408
600 Málaga 2019 1.661.785
601 Málaga 2018 1.641.121
602 Málaga 2017 1.630.615
603 Málaga 2016 1.629.298
604 Málaga 2015 1.628.973
605 Málaga 2014 1.621.968
606 Málaga 2013 1.652.999
607 Málaga 2012 1.641.098
608 Málaga 2011 1.625.827
609 Málaga 2010 1.609.557
610 Málaga 2009 1.593.068
611 Málaga 2008 1.563.261
612 Málaga 2007 1.517.523
613 Málaga 2006 1.491.287
614 Málaga 2005 1.453.409