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

基于pandas另一列关键词过滤DataFrame文本行的问题

解决方案

问题原因

df['text'].str.contains()要求第一个参数是单个字符串或编译后的正则模式,你直接传入df['keyword'].str会把每行的关键词列表转成字符串(比如"['a','b']"),不符合参数要求,因此触发错误。

方法一:逐行检查关键词匹配(基础版)

用apply逐行遍历DataFrame,通过any()判断对应行的text是否包含keyword列表中的任意关键词:

# 筛选保留符合条件的行
df = df[df.apply(lambda row: any(key in row['text'] for key in row['keyword']), axis=1)]

方法二:正则精准匹配(进阶版)

如果需要整词匹配(避免部分匹配,比如不想把"cat"匹配到"category"),或者关键词包含正则特殊字符(如*、?),可以用re模块处理:

import re

def check_match(row):
    for key in row['keyword']:
        # \b 表示整词边界,re.escape 转义关键词中的特殊字符
        if re.search(rf'\b{re.escape(key)}\b', row['text']):
            return True
    return False

df = df[df.apply(check_match, axis=1)]

方法三:处理字符串形式的关键词列表

如果你的keyword列存储的是字符串格式的列表(比如"['python','pandas']"),需要先将其转换为真正的列表类型:

import ast

# 把字符串转成列表
df['keyword'] = df['keyword'].apply(ast.literal_eval)
# 再执行基础版的筛选逻辑
df = df[df.apply(lambda row: any(key in row['text'] for key in row['keyword']), axis=1)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:01:00