NBA_API:为什么这段Python代码返回空数据框?
我只是想获取今天所有的比赛数据;之后我会把球队的统计信息合并到这些数据上,但那是另一个问题。
我的问题是,下面的代码为什么会返回一个空的数据框?我可以通过一个循环打印出结果——这就是我得到下面想要的输出的方式——但不知为什么我无法把它们放进一个数据框里。我哪里做错了?
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年3月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 个回答
0
有两个问题:
games
是一个字典的列表,所以你不能像你现在这样直接把它的值放到 pandas 数据框里。即使可以这样做,你在每次循环的时候也会覆盖掉之前的值。为了避免这个问题,你可以使用
collections.defaultdict
。
你可以从 games
中提取你想要的值到一个新的字典 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