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

Pandas:分组后如何基于日期添加比赛场次计数列?

为体育DataFrame添加按球队的比赛场次编号(GameNum)

原始数据

你的DataFrame初始结构如下:

球队球员日期GameID
BearsJohn2022-10-01A1
BearsDave2022-10-01A1
BearsSteve2022-10-01A1
BullsConnor2022-10-01C2
BullsJack2022-10-01C2
BearsJohn2022-10-03A3

需求

按球队和日期排序后,添加GameNum列,对每支球队的赛季比赛从1开始连续计数,同一场比赛(相同GameID/日期)的所有球员对应同一个场次编号。

简洁解决方案(无需循环/合并)

方法1:使用factorize() + transform()

import pandas as pd

# 假设你的DataFrame名为df
df = df.sort_values(['球队', '日期'])
# 按球队分组,对组内唯一GameID编号并广播到所有行
df['GameNum'] = df.groupby('球队')['GameID'].transform(lambda x: x.factorize()[0] + 1)

方法2:使用rank()密集排名

df = df.sort_values(['球队', '日期'])
# 按球队分组,对GameID进行密集排名(相同值同排名,排名连续)
df['GameNum'] = df.groupby('球队')['GameID'].rank(method='dense', ascending=True).astype(int)

运行结果

执行后得到的DataFrame如下,符合需求:

球队球员日期GameIDGameNum
BearsJohn2022-10-01A11
BearsDave2022-10-01A11
BearsSteve2022-10-01A11
BullsConnor2022-10-01C21
BullsJack2022-10-01C21
BearsJohn2022-10-03A32

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:37