0

我有一些非ASCII字符的数据。我试图照顾它使用以下内容:使用Python熊猫时编码/解码非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 

所以我尝试用它来我的大熊猫列转换:

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 
+0

我不能重现你的错误...它看起来像也许问题是你的名字列已被转换为小写? – maxymoo

+0

我刚刚用不同的文本编辑器测试过它,默认的Python IDLE似乎没有问题(甚至不需要使用.encode或.decode),但崇高的文本3似乎不断给我提出问题,这是一个问题因为我非常喜欢这个编辑器,并且认为它会在某个设置中很容易修复。 – KubiK888

回答

-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"))) 

;)

相关问题