Python 使用和'查询单行数据帧;附加条件句

Python 使用和'查询单行数据帧;附加条件句,python,pandas,Python,Pandas,使用pandas 0.13,我有一个单行数据帧: In [23]: is_same Out[23]: bid bidsize ask asksize 168 False False False False [1 rows x 4 columns] 我可以用Python语法对此进行查询: In [24]: is_same.bid & is_same.ask Out[24]: 168 False dtype: bool 当我使用pandasquer

使用pandas 0.13,我有一个单行数据帧:

In [23]: is_same
Out[23]:
       bid bidsize    ask asksize
168  False   False  False   False

[1 rows x 4 columns]
我可以用Python语法对此进行查询:

In [24]: is_same.bid & is_same.ask
Out[24]:
168    False
dtype: bool
当我使用pandas
query()
方法时,麻烦就来了。一个简单的条件很好:

In [25]: is_same.query('bid')
Out[25]:
Empty DataFrame
Columns: [bid, bidsize, ask, asksize]
Index: []

[0 rows x 4 columns]
但是如果我想和上面提到的布尔人一样,我会得到一个错误:

In [26]: is_same.query('bid & ask')
...

KeyError: 'the label [False] is not in the [index]'

这是虫子吗?有解决办法吗?

可能是个bug;像这样的布尔运算我认为还没有完全测试过 (对布尔值的评估当然是,例如“值>0”);你已经有结果了

你可以这样做

In [5]: df.query('bid==False and ask==False')
Out[5]: 
       bid bidsize    ask asksize
168  False   False  False   False

[1 rows x 4 columns]

In [6]: df.query('bid==False and ask==True')
Out[6]: 
Empty DataFrame
Columns: [bid, bidsize, ask, asksize]
Index: []

[0 rows x 4 columns]

正如我所写;必须考虑这应该如何/为什么实际起作用。我使用了“here but”和“here but”&”也可以(查询/评估有一个稍微放松的解析)跟进:这在github master中已经修复: