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

query
こつこつPython

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

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト