pandas小技: 複数の文字列のいずれかを含む (OR + 部分一致) 検索したい
例えば↓のテーブルから 東京都または千葉県 を含む値だけをフィルタする場合に、pandasではどう書くかです。
name | |
---|---|
0 | 東京都葛飾区 |
1 | 神奈川県川崎市 |
2 | 埼玉県蕨市 |
3 | 千葉県蘇我市 |
pandasのstr.containsは正規表現パターンを含めることができます。
そのため検索したい文字列リストを |
で結合すると "いずれかの文字列を含む" という検索ができます。
df = pd.DataFrame({ "name": ["東京都葛飾区", "神奈川県川崎市", "埼玉県蕨市", "千葉県蘇我市"] }) print(df.name.str.contains("東京都|千葉県")) # 0 True # 1 False # 2 False # 3 True # Name: name, dtype: bool print(df[df.name.str.contains("東京都|千葉県")]) # name # 0 東京都葛飾区 # 3 千葉県蘇我市
例えば、こういう絞り込みもできます。前後が.*
で挟まれた文字列検索と考えることができます。
print(df[df.name.str.contains("川.+川")]) # name # 1 神奈川県川崎市