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

如何用DataFrame语法筛选列值存在于指定字符串中的行

问题:将循环匹配逻辑转为Pandas DataFrame筛选语法

示例代码

data='findme, ok'
df = pd.DataFrame([x.split(',') for x in data.split('\n')])
df.columns = ['keyword', 'result']
keywords = df['keyword'].tolist()
test1='maybe you canfindme'.lower()

需求说明

需要把下面这段遍历匹配的循环代码,改成Pandas DataFrame原生的筛选语法:

for keyword in df['keyword'].tolist():
    if keyword in test1:
        print(keyword)

你尝试的写法df[df['keyword'] in test1]是错误的,因为in运算符在这里会判断整个Series对象是否是test1的成员,而不是逐个检查每个keyword是否在test1中。

正确实现方法

方法1:使用apply()逐个判断

这是最直观的写法,通过apply()对每个keyword执行"是否在test1中"的判断:

filter_result = df[df['keyword'].apply(lambda x: x in test1)]

运行后filter_result就是包含所有符合条件的行的DataFrame,对应示例里就是keyword为findme的那一行。

方法2:使用str.contains()(需注意正则特殊字符)

如果你的keyword中没有正则特殊字符(比如*、|等),也可以用Pandas的字符串方法str.contains(),把所有keyword拼接成正则匹配模式:

# 把所有keyword用|拼接,形成正则匹配规则
pattern = '|'.join(df['keyword'])
filter_result = df[df['keyword'].str.contains(pattern, na=False)]

这种方法性能比apply()略好,但如果keyword包含正则特殊字符,需要先转义,否则会匹配出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:37:18