query
条件を付けて任意の行を抽出できます。
code
適当なデータを使って、任意行の抽出を行いました。比較演算子、論理演算子で条件を絞ることができます。また、listや変数も扱うことができます。使用例を下記にまとめてみました。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
df = pd.DataFrame(data)
print(df)
# state year pop
# Ohio 2000 1.5
# Ohio 2001 1.7
# Ohio 2002 3.6
# Nevada 2001 2.4
# Nevada 2002 2.9
# Nevada 2003 3.2
print("\n一致する行の抽出(数値・比較演算子が使える)")
print(df.query('year == 2002'))
# state year pop
# Ohio 2002 3.6
# Nevada 2002 2.9
print("\n一致する行の抽出(文字列・比較演算子が使える)")
print(df.query('state == "Ohio"'))
# state year pop
# Ohio 2000 1.5
# Ohio 2001 1.7
# Ohio 2002 3.6
print("\n複数条件に一致する行の抽出(論理演算子を用いる)")
print(df.query('year == 2002 and pop == 2.9'))
# state year pop
# Nevada 2002 2.9
print("\nlistを使用して出力する")
print(df.query('year == [2001, 2002]'))
# state year pop
# Ohio 2001 1.7
# Ohio 2002 3.6
# Nevada 2001 2.4
# Nevada 2002 2.9
print("\n変数を利用する")
df_year_count = 2002
print(df.query('year == @df_year_count'))
比較演算子
queryでは、比較演算子を使うことができます。
演算子 | 例 | Trueとなる条件 |
---|---|---|
== | a == b | aがbと等しいとき |
!= | a != b | aがbと異なるとき |
> | a > b | aがbより大きいとき |
>= | a >= b | aがb以上のとき |
< | a < b | aがbより小さいとき |
is | a is b | aがbと等しいとき |
is not | a is not b | aがbと異なるとき |
in | a in b | aがbに含まれるとき(a, b は共に文字列、または、b はリストやタプル) |
not in | a not in b | aがbに含まれないとき(a, b は共に文字列、または、b はリストやタプル) |
ブール演算子
queryでは、ブール演算子も使うことができます。
演算子 | 例 | Trueとなる条件 |
---|---|---|
and | a and b | aとbも含まれているとき |
or | a or b | aもしくはbが含まれているとき |
not | a not b | aが含まれてないとき |