You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中精确匹配列表内的完整单词?

解决Pandas DataFrame中批量精确匹配完整单词的问题

我完全懂你的困扰——直接用'|'.join(Counties_List)会把带目标词前缀/后缀的行也捞出来,比如LAMU-NORTH这种不符合需求的结果。要实现批量精确匹配列表里的完整单词,只需要给每个目标词加上正则单词边界就能搞定。

具体实现方法:

  1. 给列表里的每个县名套上正则的单词边界标记\b,确保只匹配独立的完整单词,不会命中包含目标词的复合字符串
  2. 把处理后的正则模式传给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:12:40