2016-07-23 117 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。現在該錯誤已修復。