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

如何使用pandas进行groupby操作后统计分组内唯一元素的总数量

Pandas按分组统计指定列唯一值数量解决方案

你之前写法出错的核心原因是分组维度设置错误:不需要把B列加入groupby的分组键,只需要按A列分组后统计B列的唯一值数量即可。


测试用示例DataFrame

import pandas as pd
df = pd.DataFrame({'A': ['x', 'x', 'x','x','y']
                , 'B': ['a', 'c', 'c','b','e']
                , 'C': ['1', '2', '2','3','4']})

核心实现代码

直接统计唯一值数量

res = df.groupby('A')['B'].nunique()
print(res)

输出结果:

A
x    3
y    1
Name: B, dtype: int64

同时查看唯一值明细+数量

如果需要同时返回每个分组对应的B列唯一值具体内容,可以用agg做批量聚合:

res_detail = df.groupby('A').agg(
    B列唯一值总数 = ('B', 'nunique'),
    B列唯一值列表 = ('B', 'unique')
)
print(res_detail)

输出结果:

B列唯一值总数    B列唯一值列表
A
x          3  [a, c, b]
y          1       [e]

原有写法错误原因

  • df.groupby(['A', 'B']).count():同时用A、B两列作为分组键,拆分出来的分组是x+a、x+c、x+b、y+e四个分组,统计的是每个小分组的行数,不符合需求
  • df.groupby(['A', 'B'])['A'].nunique():同样分组维度错误,且统计的是A列的唯一值,每个分组A值都相同,结果全部为1
  • df.groupby(['A', 'B']).agg({"B": "sum"}):分组维度错误,且字符串列做sum操作会直接拼接字符串,完全不符合统计唯一值的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:00:03