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

如何在Python中筛选Pandas DataFrame含指定关键词的行

问题原因

你用的isin()是精确匹配整个字符串,只有当title列的内容完全等于关键词列表里的某一项时才会被保留。所以索引2的"Simon"能匹配上,但索引0的"Hello Simon, how are you?"因为不是完全等于关键词,就被过滤掉了。

修正方法

下面两种方法都能实现“匹配任意关键词出现”的需求:

方法1:用str.contains结合正则表达式

把关键词列表拼接成用|分隔的正则模式,str.contains会检查字符串是否包含任一关键词:

import pandas as pd

keywords = ["Simon", "Mustermann"]
# 拼接正则模式,|表示“或”的逻辑
pattern = '|'.join(keywords)
# 筛选包含任一关键词的行,case=False可选,用于忽略大小写匹配;na=False处理空值
new_df = df[df["title"].str.contains(pattern, case=False, na=False)]

方法2:用apply+any遍历检查

通过apply对每一行的title执行逻辑判断,用any确认是否有任一关键词在字符串中:

new_df = df[df["title"].apply(lambda x: any(word in x for word in keywords))]

这个方法逻辑更直观,适合对正则不太熟悉的场景。

示例验证

假设你的DataFrame是这样的:

df = pd.DataFrame({
    "title": [
        "Hello Simon, how are you?",
        "This is a test",
        "Simon",
        "Mustermann is here",
        "No keyword here"
    ]
})

用上面两种方法筛选后,new_df会保留索引0、2、3的行,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:25:33