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

Pandas如何高效筛选列表类型列中包含指定列表任意元素的行

Pandas列表列多元素匹配筛选方案

你之前用isin失效的原因是:isin方法是判断整列的单个元素是否存在于目标列表,而你的property列元素本身是列表,isin会把整个列表当作判断对象,自然不符合需求。

直接用apply结合集合运算即可实现高效筛选,步骤如下:

  1. 先将check列表转换为集合,大幅提升元素查找效率
check = ['bar', 'baz']
check_set = set(check)
  1. 构造筛选布尔掩码,判断每行列表与check集合是否存在公共元素
    这里推荐用集合的isdisjoint方法,性能比计算交集长度更高:只要找到一个公共元素就会终止判断,不需要遍历完整个列表
mask = property['property'].apply(lambda x: not check_set.isdisjoint(x))
  1. 用布尔掩码筛选符合条件的行
result_df = property[mask]

效果验证

和你给出的匹配规则完全一致:

  • 当check = ['bar']时,返回索引为1的Gousto行
  • 当check = ['bar','baz']时,返回索引为1的Gousto行
  • 当check = ['too']时,返回两行所有数据
  • 当check = ['foobar']时,返回索引为0的Deliveroo行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:39:04