使用 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'
因为这是控制台期望的编码。
我正在使用 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'
因为这是控制台期望的编码。