代码之家  ›  专栏  ›  技术社区  ›  mmyoung77

NBA_API:为什么这个Python代码返回一个空的数据帧?

  •  0
  • mmyoung77  · 技术社区  · 2 年前

    我只是想退出今天的所有比赛;稍后我会将团队统计数据合并到其中,但这是另一个问题。

    我的问题是,为什么下面的代码返回一个空的数据帧?我可以使用for循环打印结果——这就是我获得下面所需输出的方式——但由于某种原因,我无法将它们放入数据帧中。我做错了什么?

    from nba_api.live.nba.endpoints import scoreboard
    import pandas as pd
    
    todayBoard = scoreboard.ScoreBoard()
    ScoreBoardDate = todayBoard.score_board_date
    games = todayBoard.games.get_dict()
    
    todayGames = pd.DataFrame()
    
    for game in games:
        todayGames['GAME_ID']=game['gameId']
        todayGames['AWAY']=game['awayTeam']['teamTricode']
        todayGames['HOME']=game['homeTeam']['teamTricode']
    
    todayGames
    

    2024-03-21年的预期产出应为:

    GAME_ID AWAY HOME
    0022301004 NOP ORL
    0022301005 SAC WAS
    0022301006 CHI HOU
    0022301007 BKN MIL
    0022301008 UTA DAL
    0022301009 NYK DEN
    0022301010 ATL PHX
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   e-motta    2 年前

    两个问题:

    1. games 是一个字典列表,所以不能像您尝试的那样将其值分配给pandas数据帧。

    2. 如果你能做到这一点,你将覆盖每个循环上的值。为了避免这种情况,您可以使用 collections.defaultdict .

    您可以从中获得所需的值 游戏 变成一个新的dict todayGames ,然后使用创建数据帧:

    from collections import defaultdict
    
    # rest of the code omitted...
    
    todayGames = defaultdict(list)
    
    for game in games:
        todayGames["GAME_ID"].append(game["gameId"])
        todayGames["AWAY"].append(game["awayTeam"]["teamTricode"])
        todayGames["HOME"].append(game["homeTeam"]["teamTricode"])
    
    df = pd.DataFrame(todayGames)
    
          GAME_ID AWAY HOME
    0  0022301004  NOP  ORL
    1  0022301005  SAC  WAS
    2  0022301006  CHI  HOU
    3  0022301007  BKN  MIL
    4  0022301008  UTA  DAL
    5  0022301009  NYK  DEN
    6  0022301010  ATL  PHX