如何在Pandas DataFrame中精确匹配列表内的完整单词?
解决Pandas DataFrame中批量精确匹配完整单词的问题
我完全懂你的困扰——直接用'|'.join(Counties_List)会把带目标词前缀/后缀的行也捞出来,比如LAMU-NORTH这种不符合需求的结果。要实现批量精确匹配列表里的完整单词,只需要给每个目标词加上正则单词边界就能搞定。
具体实现方法:
- 给列表里的每个县名套上正则的单词边界标记
\b,确保只匹配独立的完整单词,不会命中包含目标词的复合字符串 - 把处理后的正则模式传给
str.contains(),就能精准筛选出仅含目标完整单词的行
代码示例:
import pandas as pd Counties_List = ['MOMBASA' ,'KWALE' ,'LAMU'] # 为每个县名添加单词边界,构建正则匹配模式 match_pattern = r'\b(' + '|'.join(Counties_List) + r')\b' # 执行精确匹配筛选 df2 = df1[df1['County/ Sub-County'].str.contains(match_pattern, regex=True)]
为什么这个方法有效?
\b是正则表达式里的单词边界,它匹配的是"单词字符"和"非单词字符"的分界位置(比如字符串开头/结尾、空格、标点符号等)。举个例子,\bLAMU\b只会匹配单独的LAMU,不会匹配LAMU-NORTH或者NORTH-LAMU这类包含LAMU的复合词。
额外小提示:
如果你的County/ Sub-County列存在大小写混合的情况,可以添加case=False参数来忽略大小写,实现更灵活的匹配:
df2 = df1[df1['County/ Sub-County'].str.contains(match_pattern, regex=True, case=False)]
内容的提问来源于stack exchange,提问作者krisk
相关产品推荐
相关产品推荐

