如何为pandas DataFrame中各球员生成对应赛季序号列
pandas 按球员分组标注赛季序号实现方案
核心思路
按球员姓名Name字段分组,对每个球员分组内的记录按赛季年份排序后,从1开始顺序计数,计数结果就是该球员对应的赛季序号。
具体实现代码
- 构造示例测试数据(已有现成DataFrame可跳过这步)
import pandas as pd df = pd.DataFrame({ 'Name': ['L.Bell', 'L.Bell', 'B.Hall'], 'Season Year': [2012, 2013, 2022], 'Yds': [343, 367, 0] })
- 预处理排序(必做,避免同球员赛季年份乱序导致序号错误)
# 按姓名升序、同姓名下赛季年份升序排列数据,重置索引避免后续索引混乱 df = df.sort_values(by=['Name', 'Season Year'], ignore_index=True)
- 新增赛季序号列
# groupby.cumcount()默认从0开始计数,+1后得到从1开始的赛季序号 df['Season_Num'] = df.groupby('Name').cumcount() + 1
实现效果
运行代码后得到的DataFrame完全匹配预期结果:
| Name | Season Year | Yds | Season_Num |
|---|---|---|---|
| L.Bell | 2012 | 343 | 1 |
| L.Bell | 2013 | 367 | 2 |
| B.Hall | 2022 | 0 | 1 |
注意:如果同个球员存在重复的同一年赛季记录,需要先按
Name+Season Year去重再做计数,否则会出现同一年对应多个序号的问题。
内容的提问来源于stack exchange,提问作者jprice
相关产品推荐
相关产品推荐

