2016-07-23 96 views
2

pandas,你可以这样做:大熊猫与numpy的浮动比较系列给人的TypeError

>>> x = pd.DataFrame([[1,2,3,4], [3,4,5,6]], columns=list('abcd')) 
>>> x 
    a b c d 
0 1 2 3 4 
1 3 4 5 6 
>>> 2 < x.a 
0 False 
1  True 
Name: a, dtype: bool 

然而,当我尝试用它与numpy浮动:

>>> np.float64(2) < x.a 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/simon/Documents/workspace/rent-my-rez/venv/lib/python2.7/site-packages/pandas/core/ops.py", line 741, in wrapper 
    if len(self) != len(other): 
TypeError: len() of unsized object 

有一些方法围绕这个(其中不涉及将浮点数numpy浮动到常规浮点数),还是某种方式,我可以将来自熊猫的Series类补丁实现反向比较?我已经在源代码中查看了比较实现的位置,但是我找不到它,因此在代码中提及的位置将非常有帮助

(我知道它很容易被改变比较的顺序,但我对此更感兴趣,因为我想更多地了解源代码)

+0

看起来像一个bug ... – mgilson

+0

在Python 3中对我很好,我想你使用Python 2?你可以尝试'x.a.values',它应该返回一个np.array。 – Julien

+0

你正在走下一个兔子洞!分配和比较的顺序,我相信来自C.你在这里挖C。 – Merlin

回答

0

这似乎是一个已知问题,谈到了关于here和修复here,这使得很难找到如果您(如我)正在运行0.18.0并尝试在github上查找等效行,则为源代码。如果您在github上查看0.18.0而不是master,您可以看到相关的行,例如line 739 here

1

也许你应该更新你的熊猫版本到最新的版本,因为这里有一个你的bug的更新。我只是在Python 2.7.3中用pip更新0.19.2。现在该错误已修复。