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

如何使用Python Pandas循环创建英超2019/20赛季各球队主场比赛DataFrame

批量生成英超球队主场DataFrame的循环实现方案

需求背景

我手头有个记录2019/20赛季英超所有赛事的DataFrame,核心字段包括HomeTeam(主队)、AwayTeam(客队)、Winner(获胜方),示例数据如下:

HomeTeamAwayTeamWinner
LiverpoolBrightonLiverpool
ChelseaWatfordChelsea
BrightonLiverpoolLiverpool

我已经写了一个函数,专门用来生成单支球队的主场比赛DataFrame:

'''传入球队名称,返回该球队的主场比赛DataFrame'''
def team_home_df(c):
    return data[(data['HomeTeam'] == c)]

之前我都是手动调用这个函数赋值,比如:

liverpool_home_df = team_home_df('Liverpool')

现在想通过循环批量处理,为每支球队生成[球队名]_home_df格式的变量(比如Chelsea_home_df)。我已经通过以下代码获取了所有球队的名称数组:

teams = []
clubs = data['HomeTeam'].unique()
teams.append(clubs)
print(teams)

输出结果为:

[array(['Liverpool', 'WestHam', 'Bournemouth', 'Burnley', 'CrystalPalace', 'Watford', 'Tottenham', 'Leicester', 'Newcastle', 'ManUnited', 'Arsenal', 'AstonVilla', 'Brighton', 'Everton', 'Norwich', 'Southampton', 'ManCity', 'SheffieldUnited', 'Chelsea', 'Wolves'], dtype=object)]

想请教怎么实现这个循环逻辑?


可行解决方案

首先先纠正一个小细节:你当前的teams是嵌套列表(外层多包了一层),其实直接用clubs = data['HomeTeam'].unique()就足够了,不需要再append到teams里,这样后续循环会更顺畅。

方法1:直接生成全局变量(最直接)

如果你就是想要一个个独立的xxx_home_df变量,可以操作Python的全局变量字典globals()来实现:

# 获取一维的球队列表
clubs = data['HomeTeam'].unique()

# 循环遍历每支球队
for club in clubs:
    # 拼接出目标变量名,比如"Liverpool_home_df"
    var_name = f"{club}_home_df"
    # 将生成的DataFrame赋值给这个全局变量
    globals()[var_name] = team_home_df(club)

循环结束后,你就能直接使用Liverpool_home_df、ManCity_home_df这类变量,和手动赋值的效果完全一致。

方法2:用字典统一管理(更规范)

如果不想让全局空间塞满零散变量,更推荐把所有球队的主场DataFrame放进一个字典里,管理起来更清爽:

clubs = data['HomeTeam'].unique()
# 初始化空字典存储所有结果
team_home_dfs = {}

for club in clubs:
    team_home_dfs[club] = team_home_df(club)

之后要调用某支球队的数据,直接用team_home_dfs['Liverpool']就能拿到对应的DataFrame,这种方式更符合Python编码规范,也避免了全局变量污染。

避坑提醒:别用exec

虽然exec也能实现动态创建变量,比如:

for club in clubs:
    exec(f"{club}_home_df = team_home_df('{club}')")

但这种方式风险很高——如果球队名称包含特殊字符(比如单引号),代码会直接报错,而且可读性差,不推荐使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:19:05