【发布时间】:2016-12-20 17:46:40
【问题描述】:
我有一个读取 csv 或 excel 文件的 python pandas 数据框,如下所示:
if fileType == 'csv':
df = pd.read_csv( templateFilePath, converters=converters )
else:
df = pd.read_excel( templateFilePath, sheetname=sheetName, converters=converters )
df.fillna( '', inplace=True )
在我尝试上传的文件之一中,它具有值:Banque des Règlements Internationaux (BRI) - Bâle / Bank for International Settlements
因此我不断收到此错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-15: ordinal not in range(128)
我该如何解决这个问题?
更新:
这样做:
if fileType == 'csv':
df = pd.read_csv( templateFilePath, converters=converters )
else:
df = pd.read_excel( templateFilePath, sheetname=sheetName, converters=converters )
df.fillna( '', inplace=True )
# for col in colNames:
df['COUNTRY_NAME']=df['COUNTRY_NAME'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))
它修复了上传文件时出现的错误。但我不想指定任何列名(就像这里我指定'country_name'),因为 unicode 可以出现在任何列中。我该怎么做?
【问题讨论】:
-
#--coding:utf-8-- 在第一行?