在ipython笔记本上显示数据帧时出现UnicodeDecodeError错误

在ipython笔记本上显示数据帧时出现UnicodeDecodeError错误,python,pandas,unicode,Python,Pandas,Unicode,我跑 Windows 7 64位 Python 2.7.9 | Anaconda 2.2.0(64位)|[MSC v.1500 64位(AMD64)] 熊猫版本0.15.2 Jypeter笔记本 IPython版本3.0.0 以下是我面临的问题: 当我跑的时候 import pandas as pd df = pd.DataFrame({'col': [u'α']}) df 其中α是希腊字母“a”,我得到了错误 UnicodeDecodeError回溯(最近的呼叫 最后)在() 2 test

我跑 Windows 7 64位

Python 2.7.9 | Anaconda 2.2.0(64位)|[MSC v.1500 64位(AMD64)]

熊猫版本0.15.2

Jypeter笔记本 IPython版本3.0.0

以下是我面临的问题:

当我跑的时候

import pandas as pd
df = pd.DataFrame({'col': [u'α']})
df
其中α是希腊字母“a”,我得到了错误


UnicodeDecodeError回溯(最近的呼叫 最后)在() 2 test_df=pd.DataFrame({'col':[u'α']}) 3 35; test_df=pd.DataFrame([u'Hello\u2013 World')) ---->4测试单元df

C:\Anaconda\lib\site packages\IPython\core\displayhook.pyc in 呼叫(自我、结果) 236自写格式数据(格式dict、md dict) 237自记录输出(格式dict) -->238自抛光_displayhook() 239 240 def消隐缓存(自):

中的C:\Anaconda\lib\site packages\IPython\kernel\zmq\displayhook.pyc 完成显示钩(自身) 70系统标准冲洗() 71如果self.msg['content']['data']: --->72 self.session.send(self.pub_socket,self.msg,ident=self.topic) 73 self.msg=无 七十四

中的C:\Anaconda\lib\site packages\IPython\kernel\zmq\session.pyc 发送(自身、流、消息或消息类型、内容、父项、标识、缓冲区、, 跟踪、标题、元数据) 647如果self.adapt\u版本: 648 msg=adapt(msg,self.adapt\u版本) -->649 to_send=self.serialize(msg,ident) 650至_发送扩展(缓冲区) 651 longest=max([s in to_send的长度])

中的C:\Anaconda\lib\site packages\IPython\kernel\zmq\session.pyc 序列化(self、msg、ident) 551 content=self.none 552 elif isinstance(内容,目录): -->553 content=self.pack(content) 554 elif isinstance(内容,字节): 555#内容已打包,如在中继消息中

中的C:\Anaconda\lib\site packages\IPython\kernel\zmq\session.pyc (obj) 83#不允许nan,因为它实际上不是有效的JSON 84 json_packer=lambda obj:jsonapi.dumps(obj,default=date_default, --->85确保ascii=False,允许ascii=False, 86 ) 87 json_unpacker=lambda s:jsonapi.loads

转储中的C:\Anaconda\lib\site packages\zmq\utils\jsonapi.pyc(o, **kwargs) 38 kwargs['separator']=(',',':') 39 --->40 s=jsonmod.dumps(o,**kwargs) 41 42如果isinstance(s,unicode):

C:\Anaconda\lib\json\uuuu init\uuuuu.pyc在转储中(obj、skipkeys、, 确保ascii,检查循环,允许nan,cls,缩进,分隔符, 编码,默认,排序_键,**kw) 248检查循环=检查循环,允许循环=允许循环,缩进=缩进, 249分隔符=分隔符,编码=编码,默认值=默认值, -->250个排序键=排序键,**千瓦)。编码(obj) 251 252

编码中的C:\Anaconda\lib\json\encoder.pyc(self,o) 208如果不存在(块,(列表,元组)): 209块=列表(块) -->210返回“”。加入(块) 211 212 def iterencode(self,o,_one_shot=False):

UnicodeDecodeError:“ascii”编解码器无法解码位置中的字节0xce 12:序号不在范围内(128)

但当我只运行
df=pd.DataFrame({'col':[u'α']})时,我并没有得到错误

在网上搜索了几个小时后,我发现有人建议

reload(sys)
sys.setdefaultencoding("utf-8")
作为一种解决方案,而其他人则建议永远不要使用它。此代码确实显示了数据帧,但它会中断
print
其他建议是升级到Python3


我想问的是,除了升级到Python 3之外,是否还有一种显示数据帧的解决方案,以及一种中断
print

的代码,这在Python 3和Python 2.7.9中非常适合我,使用Pandas v0.18。如果不想转到Python 3,请尝试升级Pandas模块。另外,你的IPython也过时了,尽管它似乎与此问题无关。我卸载了anaconda并再次安装。现在使用Python版本:2.7.12 | Anaconda 4.1.1(64位)|(默认值,2016年6月29日,11:07:13)[MSC v.1500 64位(AMD64)]Pandas版本:0.18.1 IPython版本:4.2.0根据需要运行。谢谢没问题。Unicode在Python2.x中可能是一个难题,因此有一天当您升级到3.x时,它的处理会更加顺利。这对于我来说在Python3和Python2.7.9中使用Pandas v0.18非常有效。如果不想转到Python 3,请尝试升级Pandas模块。另外,你的IPython也过时了,尽管它似乎与此问题无关。我卸载了anaconda并再次安装。现在使用Python版本:2.7.12 | Anaconda 4.1.1(64位)|(默认值,2016年6月29日,11:07:13)[MSC v.1500 64位(AMD64)]Pandas版本:0.18.1 IPython版本:4.2.0根据需要运行。谢谢没问题。Unicode在Python2.x中可能是一个难题,因此有一天当您升级到3.x时,它的处理会更加顺利。