pandas.Series.str.match 和 pandas.Series.str.contains 的区别

Jay*_*Jay 6 pandas

pandas.Series.str.contains和 和有pandas.Series.str.match什么区别?为什么是下面这种情况?

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

我明白了True,但是当我这样做的时候

s1.str.match(r"\bparrot\b", case=False)
Run Code Online (Sandbox Code Playgroud)

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

Mac*_*456 7

str.contains()的文档指出:

测试模式或正则表达式是否包含在系列或索引的字符串中。

str.match()的文档指出:

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

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

根据re.match() 的文档

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

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