You need to enable JavaScript to run this app. 如何使用str.contains筛选CSV列中同时包含两个指定关键词的行
优惠活动
大模型
产品
解决方案
定价
更多

如何使用str.contains筛选CSV列中同时包含两个指定关键词的行

结论:你的用法是错误的

pandas.Series.str.contains()的参数定义是str.contains(pat, case=True, flags=0, na=None, regex=True),第一个参数是匹配规则,第二个参数case是控制是否区分大小写的布尔值。你传入的第二个字符串"coronavirus"会被强制转换为布尔值True赋值给case参数,所以你的代码实际运行逻辑是仅筛选text列包含Trump的行,完全没有检查是否包含coronavirus,你现在输出看起来符合预期只是巧合。

你可以检查你提供的CSV测试数据:第4行(独立选民样本)、第5行(Morning Consult样本)的text列都同时包含「Trump」和「coronavirus」,但都没有出现在你的输出结果里,就是该写法错误的直接证明。


正确实现方式

写法1:逻辑与拼接(推荐,可读性最高)

直接写两个匹配条件用&连接即可:

approval_polls[
    approval_polls.text.str.contains("Trump") 
    & approval_polls.text.str.contains("coronavirus")
]

如果需要忽略大小写匹配,可以给每个contains加case=False参数。

写法2:正则正向预查(单条件写法)

利用正则的正向预查规则,同时校验两个关键词都存在:

# 区分大小写的写法
approval_polls[approval_polls.text.str.contains(r'^(?=.*Trump)(?=.*coronavirus).*$')]

# 忽略大小写的写法
approval_polls[approval_polls.text.str.contains(r'^(?=.*Trump)(?=.*coronavirus).*$', case=False)]

内容的提问来源于stack exchange,提问作者Olaola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 15:45:09