Python pandas如何筛选DataFrame中text_B列匹配多个指定精确值的行
你当前写法不生效的核心原因是 == 属于单个值精确匹配运算符,无法识别 | 的多值匹配逻辑,系统会将你输入的整段 "love. it|make. it. (nice)" 当成一个完整字符串去匹配 text_B 列的内容,自然找不到符合条件的行,和内容里的 (nice) 没有关系。
方案1:使用 isin() 实现多值精确匹配(最推荐)
如果你的需求是精确匹配两个完整字符串,直接用 pandas 内置的 isin() 方法即可,不需要额外处理任何特殊字符:
df[df['text_B'].isin(['love. it', 'make. it. (nice)'])]
运行后即可得到你预期的筛选结果。
方案2:使用正则匹配(适合需要模糊匹配的场景)
如果你确实需要通过正则逻辑实现多值匹配,要使用 str.contains() 方法,同时注意正则语法里的特殊字符(点.、括号())需要转义,还要用 ^ 和 $ 锚定整行匹配,避免因子串匹配出现误命中:
df[df['text_B'].str.contains(r'^love\. it$|^make\. it\. \(nice\)$')]
内容的提问来源于stack exchange,提问作者Tristan
相关产品推荐
相关产品推荐

