あるカラムに指定した複数の要素がある行を抽出・除外してみます。
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)
の前に~を付けてあげただけです。