顧客IDがAから始まるデータだけ取り出したいなぁ
1学年から2学年のデータだけ取り出したいなぁ
なんてことが大量のデータの中から取り出すのなにかと面倒ですよね。
そんなときに用いるのが、
str.startswith('文字列')
と.str.contains( )
になります。
これをqueryメソッドと合わせて書き込むことで、特定の情報のみ取り出すことができます。
import pandas as pd
df01 = pd.DataFrame( {'name':['A', 'B', 'C'],
'学年':["1学年", "2学年", "3学年"],
'math':[60, 70, 80]})
df01
name 学年 math
0 A 1学年 60
1 B 2学年 70
2 C 3学年 80
これらの3学年のデータを取り出したいときは、以下の記述をします。
df01.query("学年.str.startswith('3')" , engine="python")
name 学年 math
2 C 3学年 80
startswith()
の()中身には最初の文字列を入力します。''で囲むことを忘れないようにしましょう。今回は3
を検索しているので、上記のようになっています。
また、engine="python
にしないと.str
関数が使えないので必ず記述しましょう。
次に、1学年から2学年のデータのみ取り出しましょう。
今回は先にコードを記述していきます。
df01.query("学年.str.contains('^[1-2]',regex=True)" , engine='python')
先ほどの違う点としては.contains('^[1-2]',regex=True)
だと思います。
この ^や[]や-などは、正規表現といいます。簡単に説明していきます。
正規表現
様々なパターンで並んでいる文字列を特殊文字などを使って表現する表記法
また、基礎的な表記法もいくつか書いていきます。
任意の1文字:.
文字列の先頭:^
文字列の最後:$
同一文字の繰り返し:*, +, ?
範囲指定:-
角括弧に含まれるいずれか1文字にマッチ:[ ]
角括弧に含まれる文字以外にマッチ:[^]
このことから、先ほど記述した意味としては、
1から2から始まるデータを取り出す
ということになります。
正規表現はほかにもあるので、調べてみてください。
また、regex=True
にしないと正規表現は使えないので必ず記述しましょう。
それでは、今回はここまでになります。またよろしくお願い申し上げます。