2016-06-14 9 views
1

私は次のコードを使用してカテゴリ変数と連続変数を変換しようとしている:TypeError例外:サポートされていないオペランドのタイプ(複数可)&対象:「フロート」と「numpy.float64」

def score_to_categorical(x): 
    if x<0.25: 
     return 'very bad' 
    if x>=0.25 & x<0.5: 
     return 'bad' 
    if x>=0.5 & x<0.75: 
     return 'good' 
    else: 
     return 'very good' 

ConceptTemp['Score'] = ConceptTemp['Score'].apply(score_to_categorical) 
ConceptTemp1['Score'] = ConceptTemp1['Score'].apply(score_to_categorical) 

を私次のエラーを取得する:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-72-7ec42b055d4f> in <module>() 
----> 1 ConceptTemp['Score'] = ConceptTemp['Score'].apply(score_to_categorical) 
     2 ConceptTemp1['Score'] = ConceptTemp1['Score'].apply(score_to_categorical) 

E:\Anaconda2\lib\site-packages\pandas\core\series.pyc in apply(self, func, convert_dtype, args, **kwds) 
    2167    values = lib.map_infer(values, lib.Timestamp) 
    2168 
-> 2169   mapped = lib.map_infer(values, f, convert=convert_dtype) 
    2170   if len(mapped) and isinstance(mapped[0], Series): 
    2171    from pandas.core.frame import DataFrame 

pandas\src\inference.pyx in pandas.lib.map_infer (pandas\lib.c:62578)() 

<ipython-input-11-1c4f9c7bfafe> in score_to_categorical(x) 
    10  if x<0.25: 
    11   return 'very bad' 
---> 12  if x>=0.25 & x<0.5: 
    13   return 'bad' 
    14  if x>=0.5 & x<0.75: 

TypeError: unsupported operand type(s) for &: 'float' and 'numpy.float64' 

そのfloatnumpy.float64は互換性があるだろうが、それはケースのようには思えませんが、私がいただろう。

この点に関するお手伝いをさせていただきます。

TIA。ここ

答えて

6

x>=0.25 & x<0.5&bitwise AND operationを行うあなたは確かに両方x>=0.25andx<0.5が真であるかどうかをチェックすることを意味している間、(例えば、1 & 52Falseとして処理される、ゼロです)。同じ間違いが次の行にある

x>=0.25 and x<0.5 

ので、これを行います。

+0

はい、それはそれを解決しました、ありがとうございます。 – Patthebug

関連する問題

 関連する問題