【问题标题】:Unicode Encode Error when writing pandas df to csv将 pandas df 写入 csv 时出现 Unicode 编码错误
【发布时间】:2015-09-28 15:32:14
【问题描述】:

我清理了 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


【解决方案1】:

添加一个答案以帮助自己稍后搜索:

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

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

这将使数据帧也能正确打印。

【讨论】:

  • 我喜欢将有用的提示放入答案中以供以后谷歌搜索的想法。在我的工作日期间,Stack Overflow 每天至少访问两次。
【解决方案2】:

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

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

如果不指定编码,则df.to_csv 使用的编码在 Python2 中默认为 ascii,在 Python3 中默认为 utf-8

【讨论】:

  • 在 Python3 中显式添加参数 'encoding='utf-8'' 是否仍然重要,因为它已经是默认选项?
  • @JasonGoal:如果您的代码仅打算使用 Python3 运行,则没有必要,但此处的明确性​​将允许(至少这一行)您的代码在 Python2 和 Python3 下运行。跨度>
猜你喜欢
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
相关资源
最近更新 更多