pandas.Series.str.match和pandas.Series.str。之间的区别

时间:2019-09-10 16:43:08

标签: pandas

pandas.Series.str.containspandas.Series.str.match有什么区别?为什么会出现以下情况?

s1 = pd.Series(['house and parrot'])
s1.str.contains(r"\bparrot\b", case=False)

我有True,但有的时候

s1.str.match(r"\bparrot\b", case=False)

我得到了False。为什么会这样?

1 个答案:

答案 0 :(得分:1)

str.contains()的文档指出:

  

测试模式或正则表达式是否包含在Series或   索引。

str.match()的文档指出:

  

确定每个字符串是否与正则表达式匹配。

这两种方法的区别在于str.contains()使用的是re.search,而str.match()使用的是re.match。

根据re.match()

的文档
  

如果字符串开头的零个或多个字符与   正则表达式模式,返回相应的match对象。   如果字符串与模式不匹配,则返回None;否则返回false。请注意,   与零长度匹配不同。

因此parrot与字符串的第一个字符不匹配,因此您的表达式返回False。房屋确实与第一个字符匹配,因此找到房屋并返回true。