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

如何按整体最高计数排序Pandas分组后的结果?

解决方法

要实现让总count最高的col1组排在最前面,同时每个col1组内按count降序排列,可以按以下步骤操作:

  1. 先完成基础的分组统计,得到每个(col1, col2)组合的count:
df = test.groupby(["col1", "col2"])["col4"].count().reset_index(name="count")
  1. 新增一列计算每个col1的总count,用来作为整体排序的依据:
df["col1_total"] = df.groupby("col1")["count"].transform("sum")
  1. 按照col1的总count降序、组内count降序排序,最后删除辅助列:
result = df.sort_values(["col1_total", "count"], ascending=[False, False]).drop("col1_total", axis=1)

执行后得到的结果就是你想要的:

col1 col2  count
1    8    b      4
0    8    a      1
2    2    a      3
3    2    b      1
4    3    a      1
5    3    b      1

如果想固定让col1为"8"的组强制排在最前面(不管它的总count),也可以用自定义排序键:

# 自定义排序规则:"8"排第一,其他col1按总count降序
df["sort_key"] = df["col1"].apply(lambda x: 0 if x == "8" else df[df["col1"] == x]["count"].sum())
result = df.sort_values(["sort_key", "count"], ascending=[True, False]).drop("sort_key", axis=1)

不过第一种方法更通用,能自动根据总count调整col1组的顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:25:29