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

如何为DataFrame计算各队距上一场比赛的间隔天数

解决方案

要实现计算主客队距上一场比赛的间隔天数,可以按以下步骤操作:

1. 准备环境与数据

首先导入pandas并构造示例数据(已有目标DataFrame可跳过此步):

import pandas as pd

data = {
    'Date': ['2026-05-10', '2026-05-11', '2026-05-13', '2026-05-13'],
    'team_home': ['Tottenham', 'Liverpool', 'West Ham', 'Arsenal'],
    'team_away': ['Arsenal', 'West Ham', 'Chelsea', 'Liverpool']
}
df = pd.DataFrame(data)

2. 转换日期格式

将Date列转为datetime类型,才能进行日期差计算:

df['Date'] = pd.to_datetime(df['Date'])

3. 统一处理所有球队的比赛记录

把主队和客队的比赛数据合并为长格式,方便按球队分组计算间隔:

# 合并主客队的比赛记录
team_dates = pd.concat([
    df[['team_home', 'Date']].rename(columns={'team_home': 'team'}),
    df[['team_away', 'Date']].rename(columns={'team_away': 'team'})
])

# 按球队、日期排序,计算每场上一场的间隔天数
team_dates = team_dates.sort_values(['team', 'Date'])
team_dates['days_since_last'] = team_dates.groupby('team')['Date'].diff().dt.days.fillna(0).astype(int)

4. 映射间隔天数回原DataFrame

创建映射字典,将每个球队对应日期的间隔天数匹配到主客队列:

# 构建(球队, 日期)到间隔天数的映射
date_diff_map = team_dates.set_index(['team', 'Date'])['days_since_last'].to_dict()

# 新增home_diff和away_diff列
df['home_diff'] = df.apply(lambda row: date_diff_map[(row['team_home'], row['Date'])], axis=1)
df['away_diff'] = df.apply(lambda row: date_diff_map[(row['team_away'], row['Date'])], axis=1)

最终结果

运行后得到的DataFrame与期望一致:

Date team_home team_away  home_diff  away_diff
0 2026-05-10  Tottenham    Arsenal          0          0
1 2026-05-11  Liverpool   West Ham          0          0
2 2026-05-13   West Ham    Chelsea          2          0
3 2026-05-13    Arsenal  Liverpool          3          2

关键逻辑说明

  • 合并主客队数据:确保所有球队的所有比赛都被纳入计算,不管是主场还是客场。
  • 分组计算间隔:通过groupby('team')和diff(),自动计算每个球队每场比赛与上一场的天数差,首次比赛填充0。
  • 映射回原表:利用字典快速匹配,保证每行的主客队都能获取到对应的间隔天数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 15:47:28