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

Pandas使用apply或map结合字典校正赛事数据生成新列问题求助

问题根因

你当前的错误出在apply的调用逻辑上:

  • 你是对df['event_distance']这个单列Series调用apply,遍历时只会把每一行的event_distance数值传入自定义函数,函数内尝试读取参数的home_team属性自然不存在,触发报错。

修复方案

方案1:最小改动适配现有代码

仅修改最后一行apply的调用规则,改为对整个DataFrame按行遍历,每次传入整行数据到自定义函数即可:

# 构建校正字典、自定义函数的代码保持不变,仅修改最后一行
df['adj_dist'] = df.apply(make_adjustment, axis=1)

方案2:更高效的向量化实现(推荐)

不需要自定义函数和逐行遍历,直接用map方法把主队名称映射为校正值,做列级运算即可,大数据量下性能远高于逐行apply:

# 构建校正字典的代码不变,后续代码替换为以下内容
df['adj_dist'] = df['event_distance'] - df['home_team'].map(adj_shot_dict)

该方案利用Pandas原生向量化运算特性,避免了逐行遍历的额外开销,数据量越大性能优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:27:04