使用Python Pandas时编码/解码非ASCII字符

时间:2015-09-21 03:14:20

标签: python-2.7 pandas character-encoding ascii non-ascii-characters

我有一些非ASCII字符的数据。我尝试使用以下方法来处理它:

# coding=utf-8
import pandas as pd
from pandas import DataFrame, Series
import sys
import re
reload(sys)
sys.setdefaultencoding('latin1')

虽然我已经确定了一些记录仍然给我编码/解码问题。我复制并粘贴了一条有问题的记录(包含记录的名称和位置列),如下所示:

'Eugène Badeau'    'E, Québec (county/comté), Quebec, Canada'

使用.decode('utf-8')添加到确切的文本提取,它解决了问题。

print 'Eugène Badeau   E, Québec (county/comté), Quebec, Canada'.decode('utf-8')
output: Eugène Badeau   E, Québec (county/comté), Quebec, Canada

所以我尝试用它来转换我的pandas列:

df.name = df.name.str.encode('utf-8')

位置似乎没问题,但名称仍然错误:

print df.location[735]
print df.name[735]

output:
E, Québec (county/comté), Quebec, Canada
eugã¨ne badeau

1 个答案:

答案 0 :(得分:-1)

您可以与unidecode lib结合使用:

from unidecode import unidecode

df['name']=df['name'].apply( lambda x:  unidecode(unicode(x, encoding = "utf-8")))
df['location']=df['location'].apply( lambda x:  unidecode(unicode(x, encoding = "utf-8")))