python笔记:UserWarning: This pattern has match groups. To actually get the groups, use str.extract.

别说谁变了你拦得住时间么 提交于 2019-11-30 00:28:29
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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!