例えば↓のテーブルから 東京都または千葉県 を含む値だけをフィルタする場合に、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 神奈川県川崎市