pandas.Series.str.contains
和pandas.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
。为什么会这样?
答案 0 :(得分:1)
str.contains()的文档指出:
测试模式或正则表达式是否包含在Series或 索引。
str.match()的文档指出:
确定每个字符串是否与正则表达式匹配。
这两种方法的区别在于str.contains()使用的是re.search,而str.match()使用的是re.match。
的文档如果字符串开头的零个或多个字符与 正则表达式模式,返回相应的match对象。 如果字符串与模式不匹配,则返回None;否则返回false。请注意, 与零长度匹配不同。
因此parrot与字符串的第一个字符不匹配,因此您的表达式返回False。房屋确实与第一个字符匹配,因此找到房屋并返回true。