【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)UnicodeEncodeError:“ascii”编解码器无法对位置 0-9 中的字符进行编码:序数不在范围内(128)
【发布时间】:2018-11-05 11:06:49
【问题描述】:

编写此代码时:

df['new'] = df.astype(str).apply(' '.join, axis=1)

它导致了这个:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)

df 包含希腊字符。

在阅读了类似问题中的编码后,我无法将其应用于这种情况并使用:

import sys
reload(sys)
sys.setdefaultencoding('utf8')

虽然有效。每个人都不支持使用这个。由于以后可能会导致错误,因此我想看看您在这种特定情况下的建议。

数据是这样导入的:DataFrame.from_recordshttps://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_records.html,所以它不能接受编码作为参数。

【问题讨论】:

  • 您是否尝试将编码设置为ISO-8859-1
  • 什么时候设置
  • 尝试将encoding = "ISO-8859-1"设置为pd.read_csv()中的参数
  • 问题是我用这个读取数据:DataFrame.from_records pandas.pydata.org/pandas-docs/stable/generated/… 没有编码参数。

标签: python python-2.7 pandas encoding


【解决方案1】:

尝试简单地编码字符串:

df['new'] = df.astype(str).apply(' '.join, axis=1).encode("utf-8")

并将其添加到代码的顶部

# -*- coding: utf-8 -*-

【讨论】:

  • 看起来很有希望。如何重置我之前通过sys.setdefaultencoding('utf8') 传递的设置。所以我可以输入你的代码?
  • @user51332 我从未使用过 sys setdefaultencoding,也没有任何问题。这种带有# -- coding: utf-8 -- 的方法每天都适用于我;)
  • 这是您输入的内容。我不知道为什么它不起作用。唯一有效的是我在问题中输入的内容。但这不是建议的方式,容易出错
【解决方案2】:

我发现原因是我们的远程服务器不支持中文。所以,我把所有印刷的内容都改成了英文。

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多