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

pandas DataFrame中按行筛选列表元素及顺序完全相同的行

错误原因

你现有代码的逻辑是将每行的lst值和自身比较,结果必然全为True,所以会返回全部行,和筛选目标不符。pandas无法直接对列内存储的列表做等值判断,需要先转成可比较的元组类型再做筛选。


解决方案

场景1:筛选lst等于指定目标列表的行

如果你要匹配的目标是固定列表['GG','PP', 'DD'],用如下代码即可实现预期效果:

import pandas as pd
d = {'id':[1,2,3], 'lst' : [['GG','PP', 'DD'],['DD','PP', 'GG'], ['GG','PP', 'DD']]}
dd = pd.DataFrame(d)
# 定义目标列表,转成元组用于比较
target = tuple(['GG','PP', 'DD'])
# 将lst列的所有列表转成元组后和目标比较
result = dd[dd['lst'].apply(tuple) == target]
print(result)

运行后输出:

id          lst
0   1  [GG, PP, DD]
2   3  [GG, PP, DD]

场景2:筛选所有存在重复的列表行

如果你需要的不是匹配固定列表,而是保留所有出现次数≥2的列表对应的行,可先统计频次再筛选:

# 统计每个列表的出现次数
lst_count = dd['lst'].apply(tuple).value_counts()
# 筛选出出现次数≥2的列表
duplicate_lst = lst_count[lst_count >= 2].index
# 过滤出对应行
result = dd[dd['lst'].apply(tuple).isin(duplicate_lst)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03