【发布时间】:2015-03-01 13:38:36
【问题描述】:
我正在使用 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 解码?
如果有人能解释这里到底发生了什么,或许可以帮助我在更高层次上解决问题,我也将不胜感激。
【问题讨论】:
-
pd.__version__、str(x)和unicode(x)显示什么? -
pd.__version__ : 0.15.2 unicode(x) 和 str(x) 不会引发错误,在这种情况下它们会显示 '0\n0 \xa0'。但这很容易变得混乱。我想以某种方式将数据框整齐地打印在列中,就像任何其他数据框一样,但如果某个单元格中有一个字符串,那么它将显示为 unicode。
-
其实我想我现在明白这个问题了。当我执行 print(x) 时,Python 只是将我在执行 str(x) 时在控制台中看到的内容转储出来。然后控制台将这些东西转换为整齐的行和列,现在如果某个变量包含一些不能用 utf8 处理的东西,那么我会得到一个错误。
-
这很有趣,因为我也在使用熊猫版本
0.15.2,但对我来说str(x)是' 0\n0 \xc2\xa0'。注意'\xc2'。我的字符串使用utf8正确解码。 -
嗯这很奇怪。
标签: python printing pandas spyder