You need to enable JavaScript to run this app. 使用sportsreference NBA API获取赛程存DataFrame遇TypeError
优惠活动
大模型
产品
解决方案
定价
更多

使用sportsreference NBA API获取赛程存DataFrame遇TypeError

报错原因与修正方案

报错核心原因

  • 原代码仅访问dataframe_extended属性但未将返回的DataFrame赋值存储,循环执行后无有效持久化数据
  • 循环过程中mil2019变量被反复覆盖,未对不同球队的赛程数据做合并
  • TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'是因为dataframe_extended在计算衍生字段(如净胜分、得分差)时,遇到缺失的赛果/时间数据,内部对None值做减法触发报错

修正后代码

import pandas as pd
# 若使用新版sportsipy库,将导入路径改为sportsipy即可
from sportsreference.nba.schedule import Schedule

league = ['MIL','CHO','LAL','LAC','SAC','ATL','MIA','DAL','POR',
          'HOU','NOP','PHO','WAS','MEM','BOS','DEN','TOR','SAS',
          'PHI','BRK','UTA','IND','OKC','ORL','MIN','DET',
          'NYK','CLE','CHI','GSW']

# 初始化空列表存储各队赛程DataFrame
all_team_schedule = []

for team_abbr in league:
    try:
        schedule = Schedule(team_abbr, year='2020')
        # 优先获取扩展赛程,触发空值报错时降级为基础赛程
        try:
            team_df = schedule.dataframe_extended
        except TypeError:
            team_df = schedule.dataframe
        # 添加球队标识列,区分不同队伍的赛程数据
        team_df['team_abbr'] = team_abbr
        all_team_schedule.append(team_df)
    except Exception as e:
        print(f"球队{team_abbr}赛程获取失败:{str(e)}")

# 合并为全联盟统一的赛程DataFrame
total_schedule_df = pd.concat(all_team_schedule, ignore_index=True)

额外说明

  • 如果不需要扩展衍生字段,可直接移除扩展字段的降级逻辑,直接使用schedule.dataframe,从根源避免空值计算报错
  • 最终生成的total_schedule_df即为全联盟所有球队的赛程DataFrame,可直接做后续分析或导出存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 20:36:02