【Python】Pandasで完全一致、部分一致、不等号、AND、OR、NOTを使用して条件一致した行を抽出する方法

【Python】Pandasで完全一致、部分一致、不等号、AND、OR、NOTを使用して条件一致した行を抽出する方法

この記事ではDataFrame(Series)において完全一致した行の抽出、部分一致した行の抽出、不等号で条件一致した行の抽出、AND、OR、NOTを使用した条件指定方法を紹介します。

この記事の目標
・完全一致で行を抽出する方法の理解
・部分一致で行を抽出する方法の理解
・不等号の条件一致で行を抽出する方法の理解
・ANDで複数条件指定する方法の理解
・ORで複数条件指定する方法の理解
・NOTでの条件指定方法の理解

DataFrameとSeries型の違いがわからない人はまず以下の記事で理解しましょう!!
DataFrameとSeriesの違いを紹介
その他Pythonの記事は以下にまとめています!!

Python記事まとめ

[スポンサーリンク]


完全一致で抽出

完全一致した行だけを取り出す場合==を使います。
記載方法は以下の通り

確認のために以下のDataFrameを使用します。

では0列目がAの行だけ抽出してみましょう。

0列目がAの行だけ抽出できました。

 

部分一致で抽出

文字列において部分一致した部分だけを抽出する方法を紹介します。
それぞれ特定の文字がある場合、特定の文字列で終わる場合、特定の文字列で始まる場合、さらに詳しい条件を正規表現で指定する場合の4種類です。
自分の今探している部分を参考にしてみてください。

確認するにあたり以下のDataFrameを使用します。

 

特定の文字列を含む

特定の文字列を含む場合を抽出するにはstr.contains()メソッドを使用します。
記載方法は以下の通り

ではDataFrame0列目においてBCが含まれている行だけを抽出してみましょう。

実行前

実行後

0列目にBCが含まれている3つの行が抽出されました。

特定の文字列で終わる

特定の文字列で終わる場合はstr.endswith()メソッドを使用します。
記載方法は以下の通り

ではDataFrame0列目がBCで終わる行だけを取り出してみましょう。

実行前

実行後

0列目においてBCで終了している0行目だけが抽出されました。

特定の文字列で始まる

特定の文字列で始まる行だけを抽出する時はstr.startswith()メソッドを使用します。
記載方法は以下の通り

ではDataFrame0列目がBCで始まる行だけを抽出してみましょう。

実行前

実行後

BCで始まる2つの行が抽出されました。

正規表現でさらに詳しく条件指定

もっと詳しく文字列の条件を指定したい!!という場合は正規表現のstr.match()メソッドを使用します。
記載方法は以下の通り

確認するために以下のDataFrameを使用します

例えばABの後にFがある文字列だけ抽出したい!!なんて時に正規表現が使えます。
正規表現で表すと(“.*AB.*F”)となります。
0列目で実際に抽出してみましょう。

確かにAB→Fの順番になっている文字列の行が抽出されました。

このように正規表現を使用すれば指定したい文字列が飛び飛びでも指定できるのでとても便利です!

不等号で抽出

次に不等号で条件一致している行だけ抽出します。
記載方法は以下の通り。

確認のために以下のDataFrameを使用。

では1列目が20より大きい行だけ取り出します

1列目が20より大きい行だけ抽出できました。

[スポンサーリンク]


ANDで抽出

複数条件一致で指定する時は&を使用します。

確認のために以下のDataFrameを使用します。

では0列目でAと一致かつ1列目で10よりも大きい行を取り出してみます。

唯一ヒットする1行目が抽出できました。

ORで抽出

次にORを使用して複数条件を指定します。
ORを使用する時はを記載します。

確認のために以下のDataFrameを使用します。

では0列目がBまたは1列目が10より大きい行を取り出します。

条件に一致した3つの行が抽出されました。

NOTで抽出

次にNOT条件を使用して抽出します。
NOTは~を使用します。

では確認のために以下のDataFrameを使用します。

0列目がA以外の行を抽出します。

0列目がAではない行が抽出されました。

Pandasカテゴリの最新記事