pandas comparison raises TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]

89,858

& has higher precedence than ==. Write:

my_df.ix[(my_df.CHUNK_NAME==chunks[0])&(my_df.LAMBDA==lam_beta[0][0])]
         ^                           ^ ^                            ^
Share:
89,858
anonuser0428
Author by

anonuser0428

Updated on July 08, 2022

Comments

  • anonuser0428
    anonuser0428 about 2 years

    I have the following structure to my dataFrame:

    Index: 1008 entries, Trial1.0 to Trial3.84
    Data columns (total 5 columns):
    CHUNK_NAME                    1008  non-null values
    LAMBDA                        1008  non-null values
    BETA                          1008  non-null values
    HIT_RATE                      1008  non-null values
    AVERAGE_RECIPROCAL_HITRATE    1008  non-null values
    
    chunks=['300_321','322_343','344_365','366_387','388_408','366_408','344_408','322_408','300_408']
    lam_beta=[(lambda1,beta1),(lambda1,beta2),(lambda1,beta3),...(lambda1,beta_n),(lambda2,beta1),(lambda2,beta2)...(lambda2,beta_n),........]
    
    my_df.ix[my_df.CHUNK_NAME==chunks[0]&my_df.LAMBDA==lam_beta[0][0]]
    

    I want to get the rows of the Dataframe for a particular chunk lets say chunks[0] and particular lambda value. So in this case the output should be all rows in the dataframe having CHUNK_NAME='300_321' and LAMBDA=lambda1. There would be n rows one for each beta value that would be returned. But instead I get the follwoing error. Any help in solving this problem would be appreciated.

    TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]