【毎日Python】Pythonでデータフレームから条件を指定してデータを抽出する方法|DataFrame.query

【毎日Python】Pythonでデータフレームから条件を指定してデータを抽出する方法|DataFrame.query

Pythonで条件を指定してデータを抽出する方法です。
使用するのは、PythonのPandasライブラリのqueryメソッドです。
このようなデータフレームを用意します。

import pandas as pd
import numpy as np

df = pd.DataFrame([['A','a',110], ['C','c',130], ['A', 'a',140],['B','b',120],['E','e',150],['C','c',160],['A','a',170]],
                  columns=['upper', 'lower', 'int'])
df

queryメソッドでは、条件式を文字列で指定します。
まず、upper列がAのデータを抽出してみます。
条件の値が文字列の場合にはこのようにダブルクオーテーションで囲むことを忘れないようにしましょう。
実行します。
指定した条件でデータを抽出できました。

df.query('upper == "A"')

次に、intが150以上の値を抽出してみましょう。
指定した条件でデータを抽出できました。

df.query('int >= 150')

条件を複数指定することもできます。
ブール演算子のandを併用して抽出してみましょう。
指定した複数の条件でデータを抽出できました。

df.query('lower == "a" and int > 130')

なお、queryメソッドに似たメソッドでisinメソッドがあります。
isinメソッドでは、列に含まれる条件の値をリストで指定し、結果をTrueまたはFalseで返します。
例えばlower列がeまたはcであるデータのみ抽出したい場合にはこのようになります。
isinメソッドはブール型で結果が表示されるため、予めデータフレームに指定して実行します。
AとCのみのデータを抽出できました。

関連メソッド

【毎日Python】Pythonのデータフレームで特定の値の要素を抽出する方法|isin

【毎日Python】Pythonで条件に合う行名や列名で抽出する方法|DataFrame.filter