Python 为什么cmp(unicode,np.int64)在UnicodeDecodeError中失败?
为什么会以这种方式失败:Python 为什么cmp(unicode,np.int64)在UnicodeDecodeError中失败?,python,numpy,Python,Numpy,为什么会以这种方式失败: import numpy as np cmp(u"Never", np.int64(500)) #UnicodeDecodeError: 'ascii' codec can't decode byte 0xf4 in position 0: ordinal not in range(128) 虽然成功了: cmp(u"Never", int(np.int64(500))) 我在尝试对包含混合类型的pandas数据帧进行分组时遇到了这个问题 (python 2.7
import numpy as np
cmp(u"Never", np.int64(500)) #UnicodeDecodeError: 'ascii' codec can't decode byte 0xf4 in position 0: ordinal not in range(128)
虽然成功了:
cmp(u"Never", int(np.int64(500)))
我在尝试对包含混合类型的pandas数据帧进行分组时遇到了这个问题
(python 2.7)一方面,这是一个你真的不应该做的比较。另一方面,你遇到的这种特殊的错误是相当令人惊讶的。超级奇怪。在我的机器上,
u'
工作,然后u'
不工作。我猜这就是为什么没有人使用python2anymore@wim:查看这些值中的字节:divmod(383256)=(1127)
,以及divmod(384256)=(1128)
。128超出了ascii字符的范围。u'.\uu lt\uuuuuuuuuuuuuuuuuuuuuuuuuu(np.int64(384))
返回NotImplemented
使numpy有机会用反射np.int64.\uuugt\uuuuuuuuuuuuuuuuu
。大概是试图使用.tobytes().decode()
强制标量。