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

Python Pandas中GroupBy聚合后按指定列排序的实现方法

在Pandas中实现GroupBy聚合后的排序(等效SQL的ORDER BY)

其实这个需求和SQL里GROUP BY后接ORDER BY的逻辑完全对应——先完成分组聚合得到统计结果,再对结果集按指定列排序就行,我给你一步步拆解清楚:

步骤1:先完成GroupBy聚合

假设你的原始DataFrame是df,需要按公司/机构名称分组,统计数量得到Company or Agency count.列。用agg()方法可以明确指定统计规则,尤其是你的列名带空格和点,用这种写法更稳妥:

# 分组并聚合生成统计列
aggregated_result = df.groupby("Company or Agency Name").agg(
    **{"Company or Agency count.": ("Target_Column", "count")}
)

把这里的Target_Column替换成你实际要统计行数的列(比如ID列,确保该列无空值),**语法是用来生成带特殊字符的列名的小技巧。

步骤2:对聚合结果排序

直接用sort_values()方法按目标列排序,和SQL的ORDER BY完全等效:

# 按count列降序排序(对应SQL的ORDER BY ... DESC)
sorted_result = aggregated_result.sort_values(
    by="Company or Agency count.", 
    ascending=False
)

如果需要升序排列,把ascending改成True即可(默认就是升序,可省略该参数)。

更简洁的链式写法

你也可以把聚合和排序合并成一行代码,写起来更高效:

sorted_result = df.groupby("Company or Agency Name").agg(
    **{"Company or Agency count.": ("Target_Column", "count")}
).sort_values(by="Company or Agency count.", ascending=False)

额外提示

如果你已经拿到了聚合后的DataFrame(比如从其他查询结果得到的),直接跳过聚合步骤,对现成的结果调用sort_values()就好:

# 假设你已有带count列的aggregated_df
sorted_df = aggregated_df.sort_values(by="Company or Agency count.", ascending=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:25:38