http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.query.html

****************************************************************************************************
DataFrame.query(expr, inplace=False, **kwargs) 通过表达式来查询DataFrame的列
expr,描述表达式(字符串),如果用到其他变量,请变量前加@
inplace,查询是否修改作用原DF或返回查询DF(默认False,返回查询DF。若为True,修改原DF,不返回值)
kwargs,不定参数
****************************************************************************************************
条条大路通罗马。不用query,有时候也可以达到目的。query的好处也许是其丰富自由的描述吧。同样达到的目的,性能方面没测试。先看下例子吧。

d = pd.DataFrame(np.random.randn(4, 2), columns=list('ab'))
d1 = d.query('a>b')
d2 = d[d.a > d.b]

print d
print d1
print d2
#输出 
         a         b
0 -0.497572 -1.448897
1  2.112805 -1.584541
2  0.159809  0.636766
3  0.230180  0.714110
          a         b
0 -0.497572 -1.448897
1  2.112805 -1.584541
          a         b
0 -0.497572 -1.448897
1  2.112805 -1.584541

再看一个例子。

ids = [101, 102]
d = pd.DataFrame({'id':np.random.randint(100, 105, 6)})
d1 = d.query('id in @ids', inplace=False)
print d
print d1
#输出
    id
0  103
1  104
2  103
3  102
4  102
5  103
    id
3  102
4  102