包含特殊字符的熊猫数据框

时间:2020-06-29 22:10:57

标签: pandas unicode encoding

我正在使用一个包含西班牙各省人口统计信息的数据集,其名称具有á,é,í等特殊字符。对于这些字符的编码部分,我很难过,感谢您能为我提供的任何帮助。

首先,我发现我的数据集以“ 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



                            

0 个答案:

没有答案