Pandas 特定の文字列を含む行を抽出する

str.contains()

str.contains()を用いることで、特定の文字列を含む行をTrueもしくはFalseの真偽値で返してくれます。
特定の文字列が含まれている要素がある場合にTrueとなり、含まれていない場合はFalseになります。
また、str.contains()の引数には、いくつかありますが、今回はcaseパラメータのみ解説致します。

例えば以下のようなデータフレームがあるとします。

import pandas as pd
mail_lists = pd.DataFrame({"test@aiacademy.jp", "sample@aiacademy.jp", "aiacademy@gmail.com", "AI@gmail.com"}, columns=["email"])
mail_lists

出力結果

上記のデータフレームから「@aiacademy.jp」というドメインを含む行を抽出したい場合には以下のように書けます。

mail_lists["email"].str.contains("@aiacademy.jp")

実際に「@aiacademy.jp」というドメインを含む行のみのデータフレームを取得した場合は以下のようにします。

mail_lists[mail_lists["email"].str.contains("@aiacademy.jp")]

caseオプションに関して

str.contains()のデフォルトはcase=Trueとなっており、大文字・小文字が区別されます。
そのため、AIとした場合、2行目のみが抽出される処理になります。

mail_lists[mail_lists["email"].str.contains("AI")]

大文字と小文字を区別しないようにするには、caseをFalseに指定することで、大文字・小文字が区別されないようになります。そのため「ai」や「AI」でも抽出されます。

mail_lists[mail_lists["email"].str.contains("AI", case=False)]

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。

1 COMMENT

現在コメントは受け付けておりません。