TypeError: unsupported operand type(s) for &: 'float' and 'numpy.float64'
44,716
Here x>=0.25 & x<0.5
&
performs a bitwise AND operation (for example, 1 & 52
is zero, which will be treated as False
), while you certainly meant to check whether both x>=0.25
and x<0.5
are true.
So, do this:
x>=0.25 and x<0.5
The same mistake is on the next line.
Author by
Patthebug
Updated on July 09, 2022Comments
-
Patthebug almost 2 years
I'm trying to convert a continuous variable to a categorical variable using the following code:
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)
but I get the following error:
--------------------------------------------------------------------------- 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'
I would've though that
float
andnumpy.float64
would be compatible but that doesn't seem to be the case.Any help in this regard would be much appreciated.
TIA.
-
Patthebug almost 8 yearsyes, that solved it, thanks a lot.