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

如何基于分组总和对Pandas DataFrame进行分组排序?

按指定规则重排Pandas DataFrame的实现方法

核心思路

先计算每个(year, make, model)组合的num_registered_cars总和,将该总和关联回原DataFrame的每一行,再以此总和为依据完成分组排序,确保同一年份内总量高的make+model组排在前面,且同组行自动聚合。

具体代码实现

假设你的原DataFrame名为car_df,按以下步骤操作:

  1. 计算分组总量
# 统计每个年份下,各品牌+车型的总注册量
group_totals = car_df.groupby(['year', 'make', 'model'])['num_registered_cars']\
                     .sum()\
                     .reset_index(name='total_registered')
  1. 关联总量到原数据
# 把分组总量合并回原DataFrame,让每一行都能获取到所属组的总注册量
car_df_with_total = car_df.merge(group_totals, on=['year', 'make', 'model'])
  1. 执行排序
# 按规则排序:年份升序,组总注册量降序,同组内可按品牌/车型进一步排序(可选)
sorted_car_df = car_df_with_total.sort_values(
    by=['year', 'total_registered', 'make', 'model'],
    ascending=[True, False, True, True]
)

# 可选:删除临时添加的total_registered列
sorted_car_df = sorted_car_df.drop(columns='total_registered')

效果说明

排序后的结果会满足:

  • 所有行按year从小到大排列
  • 同一年份内,make+model组按总注册量从高到低排序
  • 同一make+model的所有行(不同fuel、variant等)会自动聚合在一起

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:05:27