0
0

More than 1 year has passed since last update.

python pandas :条件指定による抽出

Posted at

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が含まれてないとき

link

参考にしたリンク先です。
条件指定による抽出
演算子

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0