如何仅按完整单词而非子串过滤Pandas DataFrame?
匹配完整单词的过滤方案
要实现仅筛选comment列中包含完整单词in的行,核心是用正则表达式的单词边界来精确匹配独立单词,而非子串。
优化后的代码(高效适配大型DataFrame)
# 用正则单词边界\b匹配独立的"in" pattern = r'\bin\b' comp = complete[complete['comment'].str.contains(pattern, case=False, regex=True)]
关键说明
\b是正则中的单词边界,它匹配单词字符(字母/数字/下划线)与非单词字符的分界,或是字符串的开头/结尾。这就确保只会匹配独立的in,不会命中coming、inside这类单词里的子串。- 直接对
comment列使用str.contains是向量化操作,比原代码的apply逐行处理效率高得多,更适合大型DataFrame。 - 如果需要兼容带标点的场景(比如
in,、in.),这个正则同样有效,因为标点属于非单词字符,\b会正确识别in作为独立单词的边界。
内容的提问来源于stack exchange,提问作者Alexandro Giles
相关产品推荐
相关产品推荐

