Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to select rows in a pandas dataframe from a column with a categoricalDtype using a logical operator

If I have a column in a pandas dataframe that is a categorical data type, how can I select the rows using a logical operator ?

for example if I have :

df = pd.DataFrame(np.random.randint(0,100,size=150), columns=['whatever'])
df_bins=np.linspace(df.min(),df.max(),101)
df['bin']=pd.cut(df.iloc[:,0],df_bins)

df['bin'] is an ordered categorical Dtype. How to select the rows whose intervals are e.g. bigger than a certain value. If I do

df['bin']>50

I get an error saying that I cannot compare categorical with a scalar.

like image 267
Nabla Avatar asked Nov 30 '25 13:11

Nabla


1 Answers

By using IntervalIndex and left

pd.IntervalIndex(df['bin']).left>50
Out[28]: 
array([False, False, False,  True, False,  True, False, False,  True,
       False, False, False, False, False, False,  True,  True, False,
        True, False, False, False, False, False, False,  True, False,
       False,  True, False, False, False, False, False, False, False,
       False, False,  True, False,  True, False,  True,  True, False,
       False, False, False, False, False,  True, False, False,  True,
        True,  True,  True,  True, False, False, False, False, False,
       False, False,  True, False, False,  True,  True, False, False,
       False,  True,  True,  True, False,  True,  True,  True,  True,
       False,  True, False,  True,  True, False,  True,  True, False,
        True,  True, False,  True,  True, False,  True,  True,  True,
       False,  True,  True, False, False, False,  True, False,  True,
       False,  True,  True,  True, False,  True,  True, False, False,
       False,  True,  True,  True, False, False,  True, False,  True,
       False, False,  True, False,  True, False, False, False,  True,
       False,  True, False, False,  True, False,  True, False, False,
       False, False, False, False, False, False])
like image 93
BENY Avatar answered Dec 02 '25 05:12

BENY



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!