カテゴリーによる抽出などの完全一致は頻出だけど、部分一致は案外使わないのでメモ。
まずはいつものDF。
import pandas as pd
df = pd.DataFrame({'ID': [1, 2, 3, 3, 4, 5, 5],
'Name': ['Noto', 'Hisakawa', 'Kouda', 'Hayashibara', 'sakamoto', 'tamura', 'mitsuishi'],
'score':[100, 50, 80, 50, 100, 70, 55]})
df
ID Name score
0 1 Noto 100
1 2 Hisakawa 50
2 3 Kouda 80
3 3 Hayashibara 50
4 4 sakamoto 100
5 5 tamura 70
6 5 mitsuishi 55
部分一致を使う場合は、str.containsメソッドを使う。戻ってくるのはSeries。
df['Name'].str.contains('sakamoto')
0 False
1 False
2 False
3 False
4 True
5 False
6 False
Name: Name, dtype: bool
第1引数は正規表現での検索になる。便利。
df['Name'].str.contains('sa.*to')
0 False
1 False
2 False
3 False
4 True
5 False
6 False
Name: Name, dtype: bool
正規表現をOFFにしたい(文字列をそのまま検索したい)場合は、引数regex=Falseを指定すれば良い。
df['Name'].str.contains('sa.*to', regex=False)
0 False
1 False
2 False
3 False
4 False
5 False
6 False
Name: Name, dtype: bool
特定の文字列で始まる、終わるなどのメソッドもあるが(str.startswith、str.endswith)、正規表現でだいたいカバーできそう。