str.contains 找不到部分匹配项

Posted

技术标签:

【中文标题】str.contains 找不到部分匹配项【英文标题】:str.contains doesn't find partial matches 【发布时间】:2021-05-07 21:29:01 【问题描述】:

在数据框中

df = pd.DataFrame('colA': ['id1', 'id2', 'id3', 'id4', 'id5'],
                   'colB': ['Black cat', 'Black mouse', 'Black_A cat', 'Black cat', 'White_A mouse'])

我想找到colB 包含Black cat 的所有行。我的命令

df[df['colB'].str.contains('Black cat', na=False)]

只允许查找

colA    colB
0   id1 Black cat
3   id4 Black cat

虽然我期望这样:

    colA    colB
0   id1 Black cat
2   id3 Black_A cat
3   id4 Black cat

部分匹配有什么问题?

【问题讨论】:

【参考方案1】:

在您的情况下,partial match 是什么? contains 用于查找精确的子字符串,因此 Black A cat 不会匹配 Black cat。如果您希望在 Blackcat 之间使用可选字符,则应在模式中指定:

df[df['colB'].str.contains('Black.*cat', na=False)]
#                                ^ this

输出:

  colA         colB
0  id1    Black cat
2  id3  Black_A cat
3  id4    Black cat

【讨论】:

以上是关于str.contains 找不到部分匹配项的主要内容,如果未能解决你的问题,请参考以下文章

Dell笔记本启动找不到硬盘?

Pandas str.contains 用于部分字符串的精确匹配

求助,找不到EFI启动项了

使用带有 python/pandas 的 dict 理解与 str.contains 进行部分字符串匹配

华硕笔记本找不到硬盘怎么办?

新的组装电脑组装好后找不到启动硬盘怎么办?