【Pandas】 あるカラムに指定したの複数の要素がある行を抽出・除外する【メモ】

あるカラムに指定した複数の要素がある行を抽出・除外してみます。

githubにもあげてます。https://github.com/tocom242242/aifx_blog_codes/blob/master/pandas/include_exclude_multiple_word.ipynb

まずデータの用意。

import pandas as pd
df = pd.DataFrame([["A", "B", "C"], ["D", "E", "F"], ["G", "H", "I"], ["J", "K", "L"]], 
                  index=["R1", "R2", "R3", "R4"], 
                  columns=["C1", "C2", "C3"])
df
   C1 C2 C3
R1  A  B  C
R2  D  E  F
R3  G  H  I
R4  J  K  L

抽出

では、抽出を行ってみます。C2カラムにB,Hが含まれる行を抽出します。
具体的には以下のように取り出します。

words = ["B", "H"]
pattern = "|".join(words)
df.loc[df["C2"].str.contains(pattern)]

以下出力

   C1 C2 C3
R1  A  B  C
R3  G  H  I

containsメソッドを使ってC2カラムに指定した要素があるかどうかを判定しています。

除外

逆にC2カラムのB,Hが含まれていない行を抽出してみます。

words = ["B", "H"]
pattern = "|".join(words)
df.loc[~df["C2"].str.contains(pattern)]

以下出力

   C1 C2 C3
R2  D  E  F
R4  J  K  L

ほとんど同じです。df["C2"].str.contains(pattern)の前に~を付けてあげただけです。

タイトルとURLをコピーしました