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

如何判断Pandas DataFrame单元格内列表元素是否存在重复

标记Pandas列表列中的重复元素

要判断DataFrame的列表列中是否包含重复元素,核心思路是利用集合自动去重的特性:对比原列表长度与转成集合后的长度,若集合长度小于原列表长度,说明存在重复元素。

错误方法分析

  • 用any(i == x[0] for i in x):因为列表第一个元素必然等于自身,所以所有行都会返回True,完全无法区分重复情况。
  • 用all(i == x[0] for i in x):仅当列表所有元素都和第一个元素相同时才返回True,无法识别"部分元素重复"的场景(比如['22','22','34'])。

正确实现代码

import pandas as pd

# 测试用例1:列表长度为2的情况
df1 = pd.DataFrame({
    'List': [['22', '65'], ['22', '22'], ['22', '91']],
})
df1['Has_Duplicates'] = df1['List'].apply(lambda x: len(x) != len(set(x)))
print(df1)

# 测试用例2:包含部分重复元素的长列表
df2 = pd.DataFrame({
    'List': [['22', '65'], ['22', '22','34'], ['22', '91']],
})
df2['Has_Duplicates'] = df2['List'].apply(lambda x: len(x) != len(set(x)))
print(df2)

输出结果

第一个测试用例输出:

List  Has_Duplicates
0  [22, 65]            False
1  [22, 22]             True
2  [22, 91]            False

第二个测试用例输出:

List  Has_Duplicates
0     [22, 65]            False
1  [22, 22, 34]             True
2     [22, 91]            False

补充说明

如果列表中包含不可哈希元素(比如嵌套列表),set()无法直接使用,此时可以通过统计元素出现次数来判断:

from collections import Counter

df['Has_Duplicates'] = df['List'].apply(lambda x: any(count > 1 for count in Counter(x).values()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:02:50