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

在DataFrame中新增列查询各主客队上一周的对阵球队

实现方案(基于Python Pandas)

核心思路是先整理出所有球队每一周的对阵对手映射关系,再关联回原表得到对应球队上周的对手信息,具体步骤如下:

  • 第一步:拆分原表的每场比赛,生成「赛季-周-球队-当前周对手」的映射长表
  • 第二步:调整映射表的匹配字段,把周数+1,用来对应原表中「当前周」和「上周」的关系
  • 第三步:分别将主队、客队的上周对手关联到原表,生成两个新字段
import pandas as pd

# 1、生成球队每周对手的映射表
team_week_opponent = pd.concat([
    # 提取主队对阵记录:球队为home_team,对手为away_team
    df[['season', 'week', 'home_team', 'away_team']].rename(columns={'home_team':'team', 'away_team':'current_opponent'}),
    # 提取客队对阵记录:球队为away_team,对手为home_team
    df[['season', 'week', 'away_team', 'home_team']].rename(columns={'away_team':'team', 'home_team':'current_opponent'})
])

# 2、调整映射表的匹配字段,用于关联上周数据
team_week_opponent['match_week'] = team_week_opponent['week'] + 1
team_week_opponent = team_week_opponent.rename(columns={'current_opponent':'last_week_opponent'})

# 3、关联主队上周对手到原表
df = df.merge(
    team_week_opponent,
    left_on=['season', 'week', 'home_team'],
    right_on=['season', 'match_week', 'team'],
    how='left'
).rename(columns={'last_week_opponent':'home_last_week_opponent'}).drop(columns=['team', 'match_week'])

# 4、关联客队上周对手到原表
df = df.merge(
    team_week_opponent,
    left_on=['season', 'week', 'away_team'],
    right_on=['season', 'match_week', 'team'],
    how='left'
).rename(columns={'last_week_opponent':'away_last_week_opponent'}).drop(columns=['team', 'match_week'])

补充说明:赛季第1周的球队没有上周对阵记录,对应新列会返回NaN,属于正常逻辑;关联时自带season字段作为匹配条件,不会出现跨赛季匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:06:05