你可以通过以下方式实现这一目标:
import pandas as pd
# 示例数据
data = {
'Year': [2019, 2019, 2022, 2022, 2021, 2021],
'Tm': ['A', 'B', 'C', 'D', 'E', 'F'],
'Lg': ['NORW', 'ABC', 'NORW', 'ABC', 'LAW', 'ABC'],
'Lev': ['A-', 'Rk', 'A+', 'A-', 'A', 'A+'],
'PA': [117, 100, 358, 200, 9, 50]
}
prospect = pd.DataFrame(data)
# 定义联赛等级顺序列表
levels = ['Rk', 'A-', 'A', 'A+', 'AA', 'AAA', 'MLB']
# 将'Lev'列转换为有序类别类型,并按照指定的等级顺序排列
prospect['Lev'] = pd.Categorical(prospect['Lev'], categories=levels, ordered=True)
# 按照'Year'和'PA'降序排序,然后对每年的数据取第一行(即最高级别)
prospect = prospect.sort_values(['Year', 'PA'], ascending=[True, False]).groupby('Year').first().reset_index()
print(prospect)
输出结果:
Year Tm Lg Lev PA
0 2019 A NORW A- 117
1 2021 F ABC A+ 50
2 2022 C NORW A+ 358