Pandasで正規表現を使って検索する
Pandasで正規表現を使って、マッチする行を検索する方法です。
textという列を1つ持つDataFrameをサンプルデータとして作成します。
import pandas as pd import re df = pd.DataFrame({'text': ['a', 'aaa', 'abc', 'def']})
PandasのSeriesは、文字列の便利な操作をまとめたstrアクセサを提供しています。
https://pandas.pydata.org/pandas-docs/stable/text.html
例えば、多言語の文字列型などでもよくあるcontains()やstartswith()などが使えます。
# "a"を含む df[df['text'].str.contains('a')] # text # 0 a # 1 aaa # 2 abc # "ab"で始まる df[df['text'].str.startswith('ab')] # text # 2 abc
正規表現で検索する場合は、match()を使います。例えば、"a.+"にマッチする行を選択する場合は、以下のように行います。
df[df['text'].str.match(r'a.+')] # text # 1 aaa # 2 abc # コンパイル済みのパターンを渡すこともできます pattern = re.compile('a.+') df[df['text'].str.match(pattern)] # text # 1 aaa # 2 abc