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

如何基于嵌套列表筛选pandas DataFrame中存储列表类型的列

问题排查与解决

原有写法的问题

  • 核心报错原因:pandas.Series.isin() 方法要求判断的目标元素是可哈希类型,列表属于可变不可哈希类型,所以直接用列表做归属判断会触发TypeError: unhashable type: 'list'错误。
  • 安全隐患:使用eval()解析字符串的方案风险极高,遇到异常转义的字符串可能执行任意恶意代码,生产环境禁止使用。
  • 偶发运行成功的原因:大概率是低版本pandas的特殊兼容逻辑,属于不可复现的边缘情况,不具备通用性。

最优实现方案

首先预处理匹配列表slist,将所有子列表转成小写元组后存储为集合,匹配效率比列表判断高一个数量级:

# 预处理匹配规则:统一转小写+转可哈希元组+存为集合
match_set = set(tuple(item.lower() for item in sub_list) for sub_list in slist)

# 过滤DataFrame:把path列的每个列表转小写元组,判断是否在匹配集合中
df = df[df['path'].apply(lambda x: tuple(item.lower() for item in x) in match_set)]

运行上述代码即可得到你期望的输出结果,同时兼容所有pandas版本,没有安全风险,性能也远高于原有写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:09:01