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

如何在Pandas中按院校分组并按最新入学年份排序数据

Pandas实现按院校最新入学年份排序分组,组内降序排列

要实现你需要的排序效果,核心是先给每个院校标记它的最新入学年份,再以此为依据确定院校分组的先后顺序,同时组内按入学年份降序排列。以下是具体步骤和代码:

步骤1:构造示例数据集

先还原你提供的数据集:

import pandas as pd

data = {
    'Name': ['Mary', 'Joe', 'Bill', 'Louise', 'Michael', 'Penny', 'Harry'],
    'College': ['Princeton', 'Harvard', 'Princeton', 'Princeton', 'Harvard', 'Yale', 'Yale'],
    'Year': [2017, 2018, 2016, 2020, 2019, 2018, 2015]
}
df = pd.DataFrame(data)

步骤2:添加院校最新入学年份辅助列

通过groupby+transform计算每个院校的最新入学年份,并映射到原数据的每一行:

df['College_Latest_Year'] = df.groupby('College')['Year'].transform('max')

transform的作用是将分组计算的结果(每个学院的最大入学年份)对应到该学院的所有行,这样每一行都能获取所属学院的最新年份信息。

步骤3:多条件排序

按以下优先级排序:

  1. 院校最新入学年份(降序,确定分组顺序)
  2. 院校名称(升序,确保同院校的行聚合在一起)
  3. 学生入学年份(降序,组内排序)
sorted_df = df.sort_values(
    by=['College_Latest_Year', 'College', 'Year'],
    ascending=[False, True, False]
)

步骤4:清理辅助列(可选)

如果不需要保留辅助列,可删除并重置索引:

sorted_df = sorted_df.drop('College_Latest_Year', axis=1).reset_index(drop=True)

最终得到的sorted_df就是你预期的结果:

NameCollegeYear
0LouisePrinceton2020
1MaryPrinceton2017
2BillPrinceton2016
3MichaelHarvard2019
4JoeHarvard2018
5PennyYale2018
6HarryYale2015

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:27:28