使用 spyder 以 unicode 格式打印 pandas 数据帧

Print pandas dataframe with spyder in unicode format

我正在使用 Spyder 2.3.2 和 Python 2.7.9

我在将数据帧打印到控制台时遇到问题。

考虑这个例子

import pandas as pd
x = pd.DataFrame([u'\xa0'])
x.iloc[0,0]

这在控制台中显示 u'\xa0' 没问题。

但是当我尝试这样做时

x

print(x)

我在 spyder 的内部控制台中收到此错误

"return codecs.utf_8_decode(input, errors, True) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 8:
invalid start byte"

我的理解是,发生这种情况是因为在打印整个数据帧时,spyder 会以某种方式尝试解码来自 utf8 的字符,而在这种情况下它无法做到。

有没有办法以某种方式打印 unicode 中的所有内容而不是自动 utf8 解码?

如果有人能解释这里究竟发生了什么,也许能帮助我在更高层次上解决问题,我将不胜感激。

更新:此问题将在 Spyder 2.3.3 中修复。 (谢谢,卡洛斯科尔多瓦。)


Pandas使用pd.options.display.encoding指定的编解码器对控制台显示的unicode进行编码。 (在 IPython 中键入 print(pd.get_option.__doc__)pd.get_option? 以查看可配置选项的完整列表)。

根据评论,不知何故 pd.options.display.encoding 已设置为 'cp1252',但控制台期望 'utf-8'

因此,pandas 转换 str(x) ' 0\n0 \xa0',但控制台使用 utf-8 解码此字符串 结果是 UnicodeDecodeError.

解决方法是重新设置显示编码:

pd.options.display.encoding = 'utf-8'

因为这是控制台期望的编码。