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

Pandas如何统计两个字段组合的复合唯一值数量

Pandas多列组合唯一值统计方法

df[['Last Name','First Name']].nunique()的默认逻辑是逐列计算单列的唯一值数量,不会对多列做组合维度的去重,因此无法得到姓氏+名字的复合唯一值结果,可通过以下任意一种方法实现需求:

示例数据

方法1:拼接组合列后统计

将两列值用特殊分隔符拼接为单字段后统计唯一值,分隔符需选择不会出现在字段实际值中的字符,避免出现值拼接歧义(例如姓Li名An和姓Lia名N直接拼接结果均为LiAn,会被误判为同一组合):

# 以|为分隔符拼接两列后统计唯一值
combo_unique_cnt = df[['Last Name', 'First Name']].apply(lambda x: '|'.join(x), axis=1).nunique()

方法2:去重后统计行数(推荐,性能更好)

直接对选中的两列做整行去重,统计去重结果的总行数即可,数据量较大时执行效率远高于逐行拼接:

combo_unique_cnt = df[['Last Name', 'First Name']].drop_duplicates().shape[0]

方法3:分组统计组数

以两列为维度分组,分组的总数量就是组合唯一值的总数:

combo_unique_cnt = df.groupby(['Last Name', 'First Name']).ngroups

拓展用法

如果需要查看每个姓名组合对应的出现频次,可通过分组计数直接输出:

# 返回结果包含Last Name、First Name、count三列,count为对应组合的出现次数
combo_freq = df.groupby(['Last Name', 'First Name']).size().reset_index(name='count')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:12:07