将pandas df写入csv时出现Unicode编码错误

I a*_*rge 28 python export-to-csv pandas python-unicode

我清理了400个excel文件并使用pandas将它们读入python并将所有原始数据附加到一个大df中.

然后,当我尝试将其导出到csv时:

df.to_csv("path",header=True,index=False)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xc7' in position 20: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

有人可以建议一种方法来解决这个问题及其意义吗?

谢谢

unu*_*tbu 59

unicode的DataFrame中包含值.文件存储字节,这意味着所有文件都unicode必须先编码为字节,然后才能存储在文件中.您必须指定编码,例如utf-8.例如,

df.to_csv('path', header=True, index=False, encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

如果您没有指定编码,那么df.to_csv默认情况下使用的编码ascii在Python2或utf-8Python3中.


tan*_*ius 14

添加答案以帮助自己稍后谷歌搜索:

帮助我的一个技巧是首先编码有问题的系列,然后将其解码回utf-8.喜欢:

df['crumbs'] = df['crumbs'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

这样也可以正确打印数据帧.

  • 我喜欢将有用的提示放入答案以供以后使用谷歌搜索的想法。Stack Overflow 在我的工作日中至少每天访问两次。 (4认同)