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

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章