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

如何检索pandas DataFrame指定列并按关键词生成匹配与不匹配句子列表

实现Pandas关键词匹配拆分句子列表方案

前置说明

假设你存储句子的DataFrame变量名为df,句子所在列的列名为sentence,可根据你的实际命名修改代码中对应字段。

推荐实现方案(效率更高,无需手动逐行遍历)

直接调用pandas原生字符串匹配方法完成筛选,数据量较大时性能远高于手动遍历:

import pandas as pd

# 检索词列表
search_words = ['cat', 'dog', 'pet']
# 用字典存储所有结果,结构清晰易调用
result = {}

for word in search_words:
    # 匹配包含当前词的句子,case=False代表不区分大小写,需要严格匹配可删除该参数
    include_list = df[df['sentence'].str.contains(word, case=False)]['sentence'].tolist()
    # 匹配不包含当前词的句子
    exclude_list = df[~df['sentence'].str.contains(word, case=False)]['sentence'].tolist()
    # 存入结果字典
    result[f'包含{word}的句子列表'] = include_list
    result[f'不包含{word}的句子列表'] = exclude_list

调用方法

需要获取对应列表时直接取字典值即可,例如获取包含cat的句子列表:result['包含cat的句子列表']。
如果需要生成独立的变量而非用字典存储,可在循环结束后添加代码globals().update(result),之后就能直接用包含cat的句子列表这类变量名访问对应列表。

逐行遍历实现方案(适用于必须手动遍历的场景)

search_words = ['cat', 'dog', 'pet']
# 初始化结果容器
result = {}
for word in search_words:
    result[f'包含{word}的句子列表'] = []
    result[f'不包含{word}的句子列表'] = []

# 遍历每一行句子
for sentence in df['sentence']:
    for word in search_words:
        # 大小写不敏感判断可替换为 if word.lower() in sentence.lower()
        if word in sentence:
            result[f'包含{word}的句子列表'].append(sentence)
        else:
            result[f'不包含{word}的句子列表'].append(sentence)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:27:05