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

如何为DataFrame添加球队逐场战绩列?是否需先groupby赛季?

解决球队逐场战绩累计的问题

嘿,这个需求其实挺典型的,咱们一步步来搞定它~

核心思路:必须按「球队+赛季」分组

你的赛季数据里既有常规赛(比如2015-16)又有季后赛(比如2015 Post),这两个是完全独立的赛事周期,球队的季后赛战绩不会和常规赛累计到一起,所以一定要把team和season作为分组的双重键,不能只按球队分组哦。

具体实现步骤

假设你的DataFrame有这些关键列:team(球队名称)、season(赛季)、game_date(比赛日期)、result(比赛结果,比如W代表赢,L代表输)。

1. 先按正确顺序排序

战绩是逐场累计的,必须保证同球队同赛季的比赛是按时间先后排列的,不然累计结果会出错:

# 按球队、赛季、比赛日期排序
df = df.sort_values(by=['team', 'season', 'game_date'])

2. 计算累计胜场和负场

先把胜负结果转成数值,再通过分组累计得到逐场的胜场、负场数,最后拼接成战绩字符串:

# 把胜负转成数值:赢=1,输=0
df['win_flag'] = df['result'].map({'W': 1, 'L': 0})

# 分组计算累计胜场
df['cum_wins'] = df.groupby(['team', 'season'])['win_flag'].cumsum()

# 累计负场 = 已赛场次 - 累计胜场(cumcount()+1是因为从第1场开始计数)
df['cum_losses'] = df.groupby(['team', 'season']).cumcount() + 1 - df['cum_wins']

# 生成「X胜Y负」的战绩列
df['game_by_game_record'] = df['cum_wins'].astype(str) + '-' + df['cum_losses'].astype(str)

3. 特殊情况适配

如果你的比赛结果不是W/L,而是用得分差(比如team_score - opp_score,正数为赢,负数为输),可以调整win_flag的生成逻辑:

# 用得分差判断胜负,转成0/1的标识
df['win_flag'] = (df['point_difference'] > 0).astype(int)

验证结果

你可以抽某支球队的某个赛季数据看看是否正确:

# 比如查看湖人2015-16赛季的逐场战绩
print(df[(df['team'] == 'Los Angeles Lakers') & (df['season'] == '2015-16')][['game_date', 'result', 'game_by_game_record']])

这样就能得到每支球队在每个赛季里,从第一场到最后一场的实时战绩啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:10:51