2016-07-23 11 views
2

を与え、あなたはこれを行うことができます。パンダが<code>pandas</code>では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

私にはバグのようです... – mgilson

+0

はPython 3でうまく動作しますが、Python 2を使うと思いますか? 'x.a.values'を試すことができます。これはnp.arrayを返すべきです。 – Julien

+0

あなたはウサギの穴を下っています!割り当てと比較の順序は、私はCから来ていると信じています。 – Merlin

答えて

0

hereについて話した既知の問題のようです。あなたが(私のような)あなたが0.18.0を実行していて、githubで等価な行を見つけようとしているなら、ソース。 masterの代わりに0.18.0のギブスを見ると、関連する行が表示されます。ライン739 here

1

あなたのバグのアップデートがあるため、おそらくあなたは、最新のおパンダのバージョンを更新する必要があります。 Python 2.7.3のpipで0.19.2を更新します。これでバグが修正されました。

関連する問題