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