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

如何检查Pandas列表类型Series的元素是否全部属于另一指定列表

解决方案

核心思路

先把参考列表转为集合提高元素查询效率,再逐行判断Series内的子列表是否所有元素都属于该集合,最后按要求将不符合条件的项替换为None。

完整实现代码

import pandas as pd

# 示例数据
s = pd.Series([[1,2,3], [4,6], [7,8,9,10]])
l = [1,2,3,6,7,8]

# 1. 将参考列表转为集合,大幅提升元素存在性判断效率
valid_set = set(l)

# 2. 逐行判断子列表是否所有元素都在参考集合内,两种写法可选
# 写法1:all遍历判断,兼容子列表含不可哈希元素的场景
mask = s.apply(lambda x: all(item in valid_set for item in x))
# 写法2:子集判断,代码更简洁
# mask = s.apply(lambda x: set(x).issubset(valid_set))

# 3. 不符合条件的项替换为None
result = s.where(mask, None)

输出结果

0    [1, 2, 3]
1         None
2         None
dtype: object

注意事项

  • 如果子列表内存在不可哈希的元素(如嵌套列表、字典),不可使用转集合的子集判断方法,选择第一种写法即可。
  • 参考列表转集合是优化操作,数据量较小时也可以直接用原列表l做判断,数据量越大优化效果越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:03