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

如何使用Pandas的groupby计算滚动求和?以NBA球队胜场为例

NBA球队两年周期胜场滚动求和实现

不需要用循环,结合groupby和rolling就能高效实现,而且能自动处理多球队的情况,比循环性能好很多。

步骤1:准备示例数据

import pandas as pd

df = pd.DataFrame({
    'Team': ['Hawks', 'Hawks', 'Hawks', 'Hawks', 'Hawks'],
    'Season': [1970, 1971, 1972, 1973, 1974],
    'Wins': [40, 34, 30, 46, 42]
})

步骤2:计算滚动胜场和

通过groupby('Team')确保每个球队的计算独立,再用rolling(2).sum()计算连续两个赛季的胜场总和:

# 按球队分组计算滚动2赛季胜场和,重置索引避免多级索引问题
df['Two_Season_Wins'] = df.groupby('Team')['Wins'].rolling(2).sum().reset_index(drop=True)

步骤3:生成两年周期标签

为了明确对应时段,把当前赛季和下一个赛季拼接成周期标签:

df['Season_Period'] = df['Season'].astype(str) + '-' + df['Season'].shift(-1).astype(str)

步骤4:整理结果

过滤掉最后一行(没有下一个赛季配对的无效数据),并保留需要的列:

result = df.dropna(subset=['Season_Period'])[['Team', 'Season_Period', 'Two_Season_Wins']]

最终结果

运行后result的输出如下:

TeamSeason_PeriodTwo_Season_Wins
Hawks1970-197174.0
Hawks1971-197264.0
Hawks1972-197376.0
Hawks1973-197488.0

这种方法完全避免了循环,利用Pandas的向量化操作,数据量越大优势越明显,同时groupby保证了多球队场景下每个球队的滚动计算不会互相干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:35:40