1. ホーム
  2. python

[解決済み】pandasの比較でTypeErrorが発生する:dtyped [float64] 配列と [bool] 型のスカラーを比較できない。]

2022-01-27 23:57:48

質問

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]]

私は、特定のチャンク、例えば chunks[0] と特定のラムダ値に対する Dataframe の行を取得したいです。つまり、この場合、出力はCHUNK_NAME='300_321'とLAMBDA=lambda1を持つデータフレーム内のすべての行になるはずです。各ベータ値に対して1つのn行が返されるはずです。しかし、代わりに次のようなエラーが発生します。この問題を解決するためのヘルプがあれば、感謝します。

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

解決方法は?

& よりも優先順位が高く == . 書いてください。

my_df.ix[(my_df.CHUNK_NAME==chunks[0])&(my_df.LAMBDA==lam_beta[0][0])]
         ^                           ^ ^                            ^