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

问题描述 投票:0回答:3

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

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

df.to_csv("path",header=True,index=False)

我收到此错误:

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

有人可以建议一种解决此问题的方法及其含义吗?

谢谢

python pandas export-to-csv python-unicode
3个回答
70
投票

您的数据框中有

unicode
值。文件存储字节,这意味着所有
unicode
都必须编码为字节才能存储在文件中。您必须指定编码,例如
utf-8
。例如,

df.to_csv('path', header=True, index=False, encoding='utf-8')

如果不指定编码,则

df.to_csv
使用的编码默认为Python2中的
ascii
,或Python3中的
utf-8


19
投票

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

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

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

这也将使数据框正确打印。


0
投票

使用“utf_8_sig”

    df.to_csv('df.csv', encoding='utf_8_sig') 
© www.soinside.com 2019 - 2024. All rights reserved.