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

如何在DataFrame中计算并添加主、客队距上一场比赛的间隔天数列

计算主客队距上一场比赛的间隔天数

我来帮你解决这个问题!要实现给DataFrame新增home_diff和away_diff列的需求,我们可以通过以下步骤用Pandas完成:

步骤1:准备数据并转换日期格式

首先我们先构造你提供的示例数据,并把Date列转换为datetime类型(这是计算天数差的前提):

import pandas as pd

# 构造示例DataFrame
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)
df['Date'] = pd.to_datetime(df['Date'])  # 转换为datetime格式

步骤2:收集所有球队的比赛记录

我们需要把每个球队的所有比赛(不管主场还是客场)都整理到一起,这样才能计算每一场和上一场的间隔:

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

步骤3:计算每个球队每场比赛的间隔天数

按球队分组,对日期排序后,用diff()计算当前比赛和上一场的天数差,首次比赛的间隔设为0:

# 按球队和日期排序
all_games_sorted = all_games.sort_values(['team', 'Date'])
# 计算间隔天数,首次比赛填充0
all_games_sorted['days_since_last'] = all_games_sorted.groupby('team')['Date'].diff().dt.days.fillna(0)

步骤4:将间隔天数匹配回原DataFrame

我们可以用merge的方式高效地把计算好的间隔天数对应到原表的主客队列中:

# 分别为主队和客队的匹配结果重命名列
home_merge = all_games_sorted.rename(columns={'team': 'team_home', 'days_since_last': 'home_diff'})
away_merge = all_games_sorted.rename(columns={'team': 'team_away', 'days_since_last': 'away_diff'})

# 合并回原DataFrame
df = df.merge(home_merge, on=['Date', 'team_home'], how='left')
df = df.merge(away_merge, on=['Date', 'team_away'], how='left')

最终结果

运行完上述代码后,你就能得到期望的DataFrame:

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

这个逻辑的核心是先统一收集所有球队的比赛记录,计算出每个球队每场的间隔后,再匹配回原表,这样就能准确对应主客队各自的上一场比赛间隔啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 10:49:07