我得到了以下DataFrame:
System R System_num
0 CO 0.8 1
1 CO 0.9 1
2 CO 1.0 1
3 CO 1.2 1
4 CO 1.4 1
5 CO 0.8 2
6 CO 0.9 2
7 CO 1.0 2
8 CO 1.2 2
9 CO 1.4 2
10 CO 0.8 3
我想返回R = 1.4和System_num = 2的行的索引。 我试过了:
df.ix[df.System_num == 2 & df.R == 1.4].index
虽然错误消息正在返回:
print df.ix[df.System_num == 2 & df.R == 1.4].index
File "/apps/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 834, in wrapper
na_op(self.values, other),
File "/apps/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 805, in na_op
x.dtype, type(y).__name__))
TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]
我做错了什么?
答案 0 :(得分:2)
您应该在&
运算符旁边使用括号。查看pandas documentation for indexing data。它说:
另一个常见的操作是使用布尔向量来过滤 数据。运营商是:| for or,&为和,和〜为没有。这些 必须使用括号进行分组。