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

如何筛选DataFrame中列值包含给定列表所有元素的行?

问题原因

你原有代码的逻辑错误在于:n in df['Column_To_Filter']是判断关键词是否存在于整个列的取值集合中,而非逐行校验关键词是否出现在当前行的文本里,因此无法实现需求。

实现方案

方案1:apply逐行校验(可读性最高)

直接对目标列的每行内容执行全关键词匹配校验:

list_to_check = ['yellow', 'sneaker']
# 逐行判断所有关键词都在当前行文本中
df_filtered = df[df['Column_To_Filter'].apply(lambda x: all(keyword in x for keyword in list_to_check))]

如果需要兼容大小写不敏感、非字符串值的场景,可以调整校验逻辑:

df_filtered = df[df['Column_To_Filter'].apply(
    lambda x: isinstance(x, str) and all(keyword.lower() in x.lower() for keyword in list_to_check)
)]

方案2:str.contains拼接条件(性能更高,适合大数据量)

通过逐个生成关键词匹配掩码,再做逻辑与合并:

list_to_check = ['yellow', 'sneaker']
# 初始化第一个关键词的匹配掩码
match_mask = df['Column_To_Filter'].str.contains(list_to_check[0])
for keyword in list_to_check[1:]:
    # 叠加后续关键词的匹配要求,必须全部命中
    match_mask &= df['Column_To_Filter'].str.contains(keyword)
df_filtered = df[match_mask]

内容的提问来源于stack exchange,提问作者andre.fonta90

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:21:00