如何按另一列唯一值总数排序返回pandas列的Top10结果
实现方案
你原有代码的错误点:
- 分组时同时传入
Col1和Col2作为分组键,会按两列值的组合做拆分,无法实现按Col1维度聚合统计的需求 - 链式调用的
unique()、sort_values()、count()逻辑顺序错误,没有做降序排序、取前10的相关逻辑
直接使用nunique()方法统计每组的唯一值数量即可,完整实现代码如下:
# 按Col1分组统计Col2的唯一值数量,降序排序后取前10条 top10_result = df.groupby('Col1')['Col2'].nunique().sort_values(ascending=False).head(10)
示例验证
针对你提供的测试数据,运行上述代码得到的统计结果为:
Col1 Sam Jones 2 Rebecca Stevens 1 Name: Col2, dtype: int64
如果需要输出名称 - 计数的文本格式,可通过遍历结果格式化输出:
for col1_val, unique_cnt in top10_result.items(): print(f"{col1_val} - {unique_cnt}")
输出结果和预期完全匹配:
Sam Jones - 2
Rebecca Stevens - 1
内容的提问来源于stack exchange,提问作者slb1125
相关产品推荐
相关产品推荐

