首页 > 解决方案 > str.contains 找不到部分匹配项

问题描述

在数据框中

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

部分匹配有什么问题?

标签: pandasstringcontains

解决方案


你的partial match情况是什么?contains是找到确切的子字符串,所以Black A cat不会匹配Black cat。如果您期望介于两者之间的可选字符,Black则应cat在模式中指定:

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

推荐阅读