[Python] pandasから複雑な条件抽出

[Python] pandasから複雑な条件抽出
pandasでSQLのように複数条件で抽出する場合、df.query()を使うと便利です。何度もdf[‘○○’]と指定する手間が省けます。
In [1]:
import pandas as pd
import numpy as np

#ダミーデータの作成

df = pd.DataFrame({'seg':['segA','segB','segC','segA','segB','segC'],
                  'x':[100,200,300,400,500,600],
                  'y':[700,800,900,1000,1100,1200]})
df
Out[1]:
seg x y
0 segA 100 700
1 segB 200 800
2 segC 300 900
3 segA 400 1000
4 segB 500 1100
5 segC 600 1200

df.queryで条件抽出

SQLのWHERE分のような記述で条件を指定していきます。以下のような条件で抽出してみます。

  • x > 300 かつ y > 1000
In [2]:
df.query("x > 300 and y > 1000")
Out[2]:
seg x y
4 segB 500 1100
5 segC 600 1200

文字列を含む場合

文字列のカラムに対しても大丈夫です。前の条件にsegの条件を追加してみましょう。

  • segがsegBである。
In [3]:
df.query('seg =="segB" and x > 300 and y > 1000')
Out[3]:
seg x y
4 segB 500 1100

複雑な条件の場合

()で条件を括れば、より複雑な条件で抽出することも可能です。

In [4]:
df.query(('(seg =="segB" and x > 300 and y > 1000) or seg =="segA"'))
Out[4]:
seg x y
0 segA 100 700
3 segA 400 1000
4 segB 500 1100

まとめ

SQLを利用している人にとっては、こちらのほうがすんなりと活用できるんじゃないでしょうかね。今日はここまで♪

 

Pythonカテゴリの最新記事