pandas比较引发TypeError:无法将dtyped [float64]数组与[bool]类型的标量进行比较

ano*_*428 20 python typeerror dataframe pandas

我的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]]
Run Code Online (Sandbox Code Playgroud)

我想获取特定块的Dataframe行,可以说chunks [0]和特定的lambda值.因此,在这种情况下,输出应该是数据帧中具有CHUNK_NAME ='300_321'和LAMBDA = lambda1的所有行.对于每个将返回的beta值,将有n行.但相反,我得到了以下错误.任何帮助解决这个问题将不胜感激.

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]
Run Code Online (Sandbox Code Playgroud)

eca*_*mur 88

&优先级高于==.写:

my_df.ix[(my_df.CHUNK_NAME==chunks[0])&(my_df.LAMBDA==lam_beta[0][0])]
         ^                           ^ ^                            ^
Run Code Online (Sandbox Code Playgroud)

  • 这里记录了:http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing"另一个常见的操作是使用布尔向量来过滤数据.运算符是:| for或,&和,以及〜不是.这些**必须用括号分组." (6认同)
  • 这个优先级让我很痛苦!谢谢 :)。如果我错了,请纠正我,但我不认为此属性在文档中很明显。如果有人可以添加这个,如果还没有的话,那就太好了。 (2认同)
  • & 的优先级是由 Python 语法设置的,而不是 pandas。 (2认同)