<Python, pandas> queryでの選択

queryでのデータフレームDataFrame選択。
grepみたいなやつだね。

従来の方法。

In [101]: df = pd.DataFrame({'a':['a','b','c'], 'b':['d','e','f']})

In [102]: df
Out[102]:
   a  b
0  a  d
1  b  e
2  c  f

In [103]: df[ df.a == 'a' ]
Out[103]:
   a  b
0  a  d

で、queryだと、

In [105]: df.query('a == "a"')
Out[105]:
   a  b
0  a  d

ちと注意要なのが、文字/文字列の指定は"で実施。
あと、()内の条件式は、'で囲む必要がある。

"でやらないと、

In [106]: df.query('a == 'a'')
  File "<ipython-input-106-e86417d2686c>", line 1
    df.query('a == 'a'')
                    ^
SyntaxError: invalid syntax

エラーがでる。

あと、indexでも選択可。

In [107]: df.query('index == 0')
Out[107]:
   a  b
0  a  d

にゃるほど。

マニュアル。 Indexing and Selecting Data — pandas 0.17.0 documentation