数値による条件抽出 - Python Pandas

 

{{DZ_TITLE}}
queryメソッドで条件抽出を行う方法

基本形

文字列で検索条件を指定できます。

  • query方式
# 完全一致
df.query("No == 0")
# 含まない場合
df.query("No != 0")
# 不等号を使った場合
df.query("No >  0")
df.query("No >= 0")
df.query("No <  0")
df.query("No <= 0")
# 範囲検索
df.query("1 < No < 3")
df.query("1 < No and No < 3")
  • df[df[~]]方式
# 完全一致
df[df['No']==1]
# 一致し無し
df[df['No']!=1]
df[~(df['No']==1)]
# 不等号を使った場合
df[df['No']> 1]
df[df['No']>=1]
df[df['No']< 3]
df[df['No']<=3]
# queryの様に「df.query("1 < No < 3")」と範囲指定できない
# &でつなげる必要がある
df[(1<df['No']) & (df['No']<3)]

サンプル

Noが1の物だけを探しだす。

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'No':[1,2,3], 'Type':['いぬ','ねこ','すずめ'], 'Voice':['わん','にゃん','ちゅん'] })

# すずめの情報だけを取り出す
df.query("No == 1")

複数条件を指定して検索

query メソッドの複数検索条件

or , and を使う事が可能

df.query("No==1 or Type==2")
df.query("No!=1 or Type!=2")

df[df[~]]の複数条件

  1. & | ~ オペレータ(記号)を使う。
    and は &
    or は |
    not は ~
  2. df[~]内の条件はそれぞれ()で囲む必要がある。
df[(df['No']==1) | (df['No']==2)]
df[(df['No']==1) & (df['No']!=2)]
df[~(df['No']==1) & ~(df['No']==2)]

?~? の様な上限下限のある範囲抽出

query メソッドの範囲抽出

? < カラム名 < ? の様な書き方が可能。
当然、andで指定することも可能。

df.query("1 < No < 3")
df.query("1 < No and No < 3")

df[df[~]]の範囲抽出

query メソッドの様な一気に範囲指定することは不可能。
そのため、& オペレータで条件を2つ記載する。

df[(1<df['No']) & (df['No']<3)]

小数点を含むfloatの扱い

整数の処理と何も変わらず、小数点処理を実施可能です。
テストデータの作成

df = pd.DataFrame({'名前':['東京スカイツリー','東京タワー','明石海峡大橋主塔','千葉ポートタワー'],'高さ':[634,332.6,298.3,125]})
df

名前 高さ
0 東京スカイツリー 634.0
1 東京タワー 332.6
2 明石海峡大橋主塔 298.3
3 千葉ポートタワー 125.0

こんな感じで、検索できます。
また、==の場合100%一致していないとだめなので、表示が一緒でも、小数点…以下でちょっと違うという場合もヒットしません。
そのため、小数点を含める演算では基本的には、==より>,>=,<,<=の様な範囲指定をお勧めします。

df[df['高さ']==634]
df[df['高さ']==332.6]
df[df['高さ']>=200]

関連

文字列による条件抽出
日時による条件抽出 - Python Pandas徹底解説
Python - Pandas徹底解説

おすすめ記事

URL解析、接続 - Python徹底解説
URL解析、接続 - Python徹底解説
Django Adminのパスワードを忘れたら? - Python
Django Adminのパスワードを忘れたら? - Python
Pandas徹底解説 - Python
Pandas徹底解説 - Python
Sound Font2(SF2)から波形データを取り出す
Sound Font2(SF2)から波形データを取り出す
Raspberry pi Liteの非X Window環境でJackdを動かす
Raspberry pi Liteの非X Window環境でJackdを動かす
to_excelでxlsx,xlsファイルを書き込む / Python Pandas
to_excelでxlsx,xlsファイルを書き込む / Python Pandas
Supponsered

もっとPythonを学びたいなら

Python徹底解説
Python - OpenCV徹底解説

外部サイト
↓プログラムを学んでみたい場合、学習コースなどもおすすめです!

Comments

comments powered by Disqus