pandasでlikeを複数やりたい




ターゲットの配列があって、それにマッチしたら、的な物を作ろうと思っていたんですが、そのマッチする場所が9文字目以降に入ってる、ということで、最初は9文字目以降のデータを切り出していました。

今まで
df = df[df['code_9'].isin(target_code)]

codeを9文字目以降に限定したcode_9という列を作って、そこに対してisinしていました。

新しい方法
df = df[df.code.str.contains('|'.join(target_code))]

ただしこの方法だと、targetにエスケープ文字があると割と死ぬので、こうするのがオススメ
import re
df = df[df.code.str.contains('|'.join(map(re.escape, target_code)))]


code自体にlikeをかけるイメージで扱えるため、部分検索的に使えます。
素晴らしい。


参考:
https://teratail.com/questions/251950