df = pd.DataFrame({'name': ['A(上海)AAA', 'BB(上海)BB', 'CCC', 'DDD']}) print(df) #结果如下 name 0 A(上海)AAA 1BB(上海)BB 2CCC 3 DDD
问题:
代码返回如下结果:
UserWarning: This pattern has match groups. To actually get the groups, use >str.extract. return func(self, *args, **kwargs) name 2CCC a = ['A(上海)AAA', 'BB(上海)BB', 'CCC'] b = df[df.name.str.contains('|'.join(a))] print(b)
分析:
原因1:str.contains()不直接支持对象里边的
括号
,因为括号
是正则表达式之一。解决办法:
a = ['A(上海)AAA', 'BB(上海)BB', 'CCC'] #使用转义符 “”#或者 a = ['A.上海.AAA', 'BB.上海.BB', 'CCC'] b = df[df.name.str.contains('|'.join(a))] print(b) #结果如下: name #没有UserWarning了 0 A(上海)AAA 1BB(上海)BB 2 CCC