pandas阅读excel文件时的数据框和字符编码

我正在阅读一个有几个数字和分类数据的Excel文件。 列name_string包含外语中的字符。 当我尝试查看name_string列的内容时,我得到了我想要的结果,但外键字符(在Excel电子表格中正确显示)显示为错误的编码。 这是我有什么:

import pandas as pd df = pd.read_excel('MC_simulation.xlsx', 'DataSet', encoding='utf-8') name_string = df.name_string.unique() name_string.sort() name_string 

生成以下内容:

 array([u'4th of July', u'911', u'Abab', u'Abass', u'Abcar', u'Abced', u'Ceded', u'Cedes', u'Cedfus', u'Ceding', u'Cedtim', u'Cedtol', u'Cedxer', u'Chevrolet Corvette', u'Chuck Norris', u'Cristina Fern\xe1ndez de Kirchner'], dtype=object) 

在最后一行,正确编码的名字应该是CristinaFernándezde Kirchner。 有人可以帮我解决这个问题吗?

实际上,数据正在被parsing成unicode ,而不是strsu前缀表示对象是unicode 。 当列表,元组或NumPy数组被打印时,Python将显示序列中项目的重新编号。 所以不是看到unicode的打印版本,而是看到repr

 In [160]: repr(u'Cristina Fern\xe1ndez de Kirchner') Out[160]: "u'Cristina Fern\\xe1ndez de Kirchner'" In [156]: print(u'Cristina Fern\xe1ndez de Kirchner') Cristina Fernández de Kirchner 

repr的目的是为每个对象提供一个明确的string表示。 unicode的打印版本可能因不可见或不可打印的字符而变得模糊不清。

但是,如果您打印DataFrame或Series,您将获得unicodes的打印版本:

 In [157]: df = pd.DataFrame({'foo':np.array([u'4th of July', u'911', u'Abab', u'Abass', u'Abcar', u'Abced', u'Ceded', u'Cedes', u'Cedfus', u'Ceding', u'Cedtim', u'Cedtol', u'Cedxer', u'Chevrolet Corvette', u'Chuck Norris', u'Cristina Fern\xe1ndez de Kirchner'], dtype=object)}) .....: .....: .....: In [158]: df Out[158]: foo 0 4th of July 1 911 2 Abab 3 Abass 4 Abcar 5 Abced 6 Ceded 7 Cedes 8 Cedfus 9 Ceding 10 Cedtim 11 Cedtol 12 Cedxer 13 Chevrolet Corvette 14 Chuck Norris 15 Cristina Fernández de Kirchner [16 rows x 1 columns]