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

Python中如何为含重复姓名与赛季的DataFrame添加按球员分组的赛季序号列

实现按球员分组标注赛季序号的方法

你提到的样例数据集处理后参考效果如下:

NameSeasonPointsReb赛季序号
Lebron James2003-0425ppg10reb1
Lebron James2004-0526ppg10reb2
Lebron James2005-0627ppg9reb3
Michael Jordan1984-8529ppg9reb1
Michael Jordan1985-8630ppg10reb2

以下是不同工具下的实现方案:

1. Python Pandas 实现

思路是按球员姓名分组后,对赛季列按时间升序排列,再生成组内自增序号:

import pandas as pd

# 读取数据集,这里以csv为例,可根据你的存储格式调整
df = pd.read_csv("你的数据集路径.csv")

# 去除列名和值的多余空格(适配样例中存在的格式问题)
df.columns = df.columns.str.strip()
df = df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)

# 按球员分组,对赛季升序排列后生成组内序号,从1开始计数
df = df.sort_values(by=["Name", "Season"], ascending=[True, True])
df["赛季序号"] = df.groupby("Name").cumcount() + 1

# 输出结果
print(df)

2. SQL 实现

用窗口函数ROW_NUMBER()即可实现分组排序编号,假设你的表名为nba_player_season:

SELECT 
    *,
    ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Season ASC) AS 赛季序号
FROM nba_player_season

如果你的数据库存储的赛季格式不是可直接排序的字符串,可先转换为年份数值再排序

3. Excel 实现

假设你的数据从第2行开始,A列是球员姓名,B列是赛季,要在E列生成赛季序号,在E2单元格输入以下公式,下拉填充即可:

=COUNTIFS(A$2:A2, A2, B$2:B2, "<="&B2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:54:04