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

AI・データサイエンス、
機械学習の実践力を高めたい方へ

  • プログラミングを0から学びたい
  • データサイエンティスト、データ
    アナリストを目指したい
  • AIエンジニア、大規模言語モデル(LLM)エンジニアを目指したい

AI人材コースを無料体験してみませんか?

  • 無料で120以上の教材を学び放題!
  • Pythonやデータ分析、機械学習など
    AI人材に必須のスキルを無料体験できる!
  • データ分析、AI開発の一連の流れを体験、実務につながる基礎スキルを習得!

1分で簡単!無料!

無料体験して特典を受け取る

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ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。



  • 30時間以上の動画講座が見放題!
  • 追加購入不要!
    これだけで学習できるカリキュラム
  • (質問制度や添削プラン等)
    充実したサポート体制!

1分で簡単!無料!

AI人材コースを見る



無料体験して特典を受け取る

1 COMMENT

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