LoginSignup
0
0

More than 1 year has passed since last update.

特定のデータの名前を取得する方法:str.contains, srt.startswith

Posted at

顧客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('')" , engine="python")
  name	学年	math
2	C	3学年	80

startswith()の()中身には最初の文字列を入力します。''で囲むことを忘れないようにしましょう。今回はを検索しているので、上記のようになっています。
また、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にしないと正規表現は使えないので必ず記述しましょう。

それでは、今回はここまでになります。またよろしくお願い申し上げます。

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