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

如何判断DataFrame值是否唯一并统计唯一值数量?

DataFrame指定列唯一值判断与统计方案

你的代码问题修正

你写的c=~df[col].duplicated(keep=False).sum()逻辑顺序错了:

  • df[col].duplicated(keep=False)返回的布尔Series里,重复值对应True,唯一值对应False
  • 你现在的写法会先把这个布尔序列求和(得到重复值的总个数),再对这个数字取反,结果完全不是你要的唯一值数量
  • 正确写法是先取反(让唯一值变成True),再求和:
    c = (~df[col].duplicated(keep=False)).sum()
    

其他实现方式

方法1:用value_counts直接统计

统计每个值的出现次数,再筛选出仅出现1次的数量:

# 简洁版写法
unique_count = (df[col].value_counts() == 1).sum()

方法2:用drop_duplicates获取唯一值集合

直接提取只出现一次的数值,再取长度:

only_unique_values = df[col].drop_duplicates(keep=False)
unique_count = len(only_unique_values)

方法3:通过总唯一值减重复唯一值计算

先算所有不重复的值的总数,再减去那些出现多次的值的数量:

total_unique = df[col].nunique()
# 统计出现次数≥2的唯一值数量
duplicated_unique_num = (df[col].value_counts() > 1).sum()
unique_count = total_unique - duplicated_unique_num

获取每行的唯一状态布尔序列

如果需要得到每行对应的布尔值(True表示该值唯一,False表示重复),直接用:

is_row_unique = ~df[col].duplicated(keep=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:35:24