df = pd.DataFrame({'name': ['A(上海)AAA', 'BB(上海)BB', 'CCC', 'DDD']
})
print(df)
# 結果如下
name
0 A(上海)AAA
1 BB(上海)BB
2 CCC
3 DDD
a = ['A(上海)AAA', 'BB(上海)BB', 'CCC']
dd = df[df.name.str.contains('|'.join(a))]
print(dd)
# 結果如下:
UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
return func(self, *args, **kwargs)
name
2 CCC
問題分析:
原因是str.contains()不直接支持對象裏邊的括號
,因爲括號
是正則表達式之一。
解決辦法:
a = ['A\(上海\)AAA', 'BB\(上海\)BB', 'CCC'] # 使用轉義符 “\”
# 或者
a= ['A.上海.AAA', 'BB.上海.BB', 'CCC']
dd = df[df.name.str.contains('|'.join(a))]
print(dd)
# 結果如下:
name # 沒有UserWarning了
0 A(上海)AAA
1 BB(上海)BB
2 CCC