使用熊猫转换NBA API数据时的回溯错误

问题描述

我正在使用熊猫将NBA API JSON格式转换为csv,并且出现回溯错误。现在,我会注意到几天前我遇到了另一个回溯错误,但这是不同的。

这个错误让我很困扰,特别是因为相同的代码在程序的早期工作。这是控制台中的错误: 追溯(最近一次通话):

  File "nbagamestats.py",line 48,in <module>
    dfLoop.columns = headersLoop
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\pandas\core\generic.py",line 5149,in __setattr__
    return object.__setattr__(self,name,value)
  File "pandas\_libs\properties.pyx",line 66,in pandas._libs.properties.AxisProperty.__set__
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\pandas\core\generic.py",line 564,in _set_axis
    self._mgr.set_axis(axis,labels)
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\pandas\core\internals\managers.py",line 226,in set_axis
    raise ValueError(
ValueError: Length mismatch: Expected axis has 0 elements,new values have 24 elements

此外,这是我编写的所有代码

from nba_api.stats.endpoints import BoxscoreTraditionalv2
from nba_api.stats.endpoints import shotchartdetail
import pandas as pd
import json
from openpyxl import Workbook

print('Game ID?')
gamenum = input()

### PART ONE - Player List###
response = BoxscoreTraditionalv2.BoxscoreTraditionalV2(
    end_period = 0,game_id= gamenum

)

content = json.loads(response.get_json())

# transform contents into dataframe
results = content['resultSets'][0]
headers = results['headers']
rows = results['rowSet']
df = pd.DataFrame(rows)
df.columns = headers

playerList = df['PLAYER_ID'].tolist()
print(playerList)


###PART TWO - Download Player Shotchart Data###
for i in playerList :
    filename = str(i) +'.xlsx'
    responseLoop = shotchartdetail.ShotChartDetail(
        team_id= 0,#last_n_games = numGames,game_id_nullable = gamenum,player_id= i
    )

    contentLoop = json.loads(responseLoop.get_json())

    # transform contents into dataframe
    resultsLoop = contentLoop['resultSets'][0]
    headersLoop = resultsLoop['headers']
    rowsLoop = resultsLoop['rowSet']
    dfLoop = pd.DataFrame(rowsLoop)
    dfLoop.columns = headersLoop

    # write to excel file
    dfLoop.to_excel(filename,index=False)
    print(i + ' has been written')

希望您能提供帮助,谢谢。

解决方法

好吧,是的,要进入季后赛,您需要在该处添加该参数(或者我应该说是将其更改为默认值"Regular Season"。该流程图仅返回Made Shot,而不是错过的快照) (同样是默认设置)。因此,如果您想进行所有射击尝试,则还需要更改另一个参数:

from nba_api.stats.endpoints import boxscoretraditionalv2
from nba_api.stats.endpoints import shotchartdetail
import pandas as pd
import json
from openpyxl import Workbook

#print('Game ID?')
#gamenum = input()
gamenum = '0041900404'

### PART ONE - Player List###
response = boxscoretraditionalv2.BoxScoreTraditionalV2(
    end_period = 0,game_id= gamenum

)

content = json.loads(response.get_json())

# transform contents into dataframe
results = content['resultSets'][0]
headers = results['headers']
rows = results['rowSet']
df = pd.DataFrame(rows,columns=headers)

playerList = df['PLAYER_ID'].tolist()
print(playerList)



###PART TWO - Download Player Shotchart Data###
for i in playerList :
    filename = str(i) +'.xlsx'
    responseLoop = shotchartdetail.ShotChartDetail(
        team_id= 0,season_type_all_star = 'Playoffs',#<-- change to 'Playoffs' - default is 'Regular Season' I believe
        context_measure_simple = 'FGA',#<-- Default is 'PTS' and will only return made shots
        game_id_nullable = gamenum,player_id= i
    )

    contentLoop = json.loads(responseLoop.get_json())

    # transform contents into dataframe
    resultsLoop = contentLoop['resultSets'][0]
    headersLoop = resultsLoop['headers']
    rowsLoop = resultsLoop['rowSet']
    dfLoop = pd.DataFrame(rowsLoop,columns=headersLoop)

    # write to excel file
    dfLoop.to_excel(filename,index=False)
    print(str(i) + ' has been written')

输出示例:

print(dfLoop.to_string())
            GRID_TYPE     GAME_ID  GAME_EVENT_ID  PLAYER_ID   PLAYER_NAME     TEAM_ID           TEAM_NAME  PERIOD  MINUTES_REMAINING  SECONDS_REMAINING   EVENT_TYPE                     ACTION_TYPE       SHOT_TYPE    SHOT_ZONE_BASIC         SHOT_ZONE_AREA  SHOT_ZONE_RANGE  SHOT_DISTANCE  LOC_X  LOC_Y  SHOT_ATTEMPTED_FLAG  SHOT_MADE_FLAG GAME_DATE  HTM  VTM
0   Shot Chart Detail  0041900404             61       2544  LeBron James  1610612747  Los Angeles Lakers       1                  5                 57    Made Shot               Running Dunk Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              1     -9      6                    1               1  20201006  MIA  LAL
1   Shot Chart Detail  0041900404            151       2544  LeBron James  1610612747  Los Angeles Lakers       2                 11                 23  Missed Shot                      Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              3     32     15                    1               0  20201006  MIA  LAL
2   Shot Chart Detail  0041900404            155       2544  LeBron James  1610612747  Los Angeles Lakers       2                 10                 42  Missed Shot                  Jump Bank Shot  2PT Field Goal          Mid-Range   Left Side Center(LC)        16-24 ft.             20   -129    161                    1               0  20201006  MIA  LAL
3   Shot Chart Detail  0041900404            176       2544  LeBron James  1610612747  Los Angeles Lakers       2                  9                  6    Made Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              0      3      6                    1               1  20201006  MIA  LAL
4   Shot Chart Detail  0041900404            187       2544  LeBron James  1610612747  Los Angeles Lakers       2                  8                 48    Made Shot               Driving Dunk Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              1      5      9                    1               1  20201006  MIA  LAL
5   Shot Chart Detail  0041900404            204       2544  LeBron James  1610612747  Los Angeles Lakers       2                  7                 25  Missed Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              3     29     14                    1               0  20201006  MIA  LAL
6   Shot Chart Detail  0041900404            272       2544  LeBron James  1610612747  Los Angeles Lakers       2                  2                 10  Missed Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              2    -29     -1                    1               0  20201006  MIA  LAL
7   Shot Chart Detail  0041900404            296       2544  LeBron James  1610612747  Los Angeles Lakers       2                  1                  3  Missed Shot                       Jump Shot  2PT Field Goal          Mid-Range  Right Side Center(RC)        16-24 ft.             18     66    169                    1               0  20201006  MIA  LAL
8   Shot Chart Detail  0041900404            349       2544  LeBron James  1610612747  Los Angeles Lakers       3                  8                 18    Made Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3              Center(C)          24+ ft.             28    -20    286                    1               1  20201006  MIA  LAL
9   Shot Chart Detail  0041900404            362       2544  LeBron James  1610612747  Los Angeles Lakers       3                  7                 22    Made Shot  Cutting Finger Roll Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              2      5     28                    1               1  20201006  MIA  LAL
10  Shot Chart Detail  0041900404            367       2544  LeBron James  1610612747  Los Angeles Lakers       3                  6                 44    Made Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3              Center(C)          24+ ft.             27     -9    272                    1               1  20201006  MIA  LAL
11  Shot Chart Detail  0041900404            506       2544  LeBron James  1610612747  Los Angeles Lakers       4                  8                 47    Made Shot        Turnaround Fadeaway shot  2PT Field Goal          Mid-Range           Left Side(L)         8-16 ft.             13   -131     31                    1               1  20201006  MIA  LAL
12  Shot Chart Detail  0041900404            533       2544  LeBron James  1610612747  Los Angeles Lakers       4                  6                  8    Made Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              3    -28     28                    1               1  20201006  MIA  LAL
13  Shot Chart Detail  0041900404            540       2544  LeBron James  1610612747  Los Angeles Lakers       4                  5                 37  Missed Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3   Left Side Center(LC)          24+ ft.             30   -131    274                    1               0  20201006  MIA  LAL
14  Shot Chart Detail  0041900404            548       2544  LeBron James  1610612747  Los Angeles Lakers       4                  4                 48  Missed Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3   Left Side Center(LC)          24+ ft.             30    -98    286                    1               0  20201006  MIA  LAL
15  Shot Chart Detail  0041900404            568       2544  LeBron James  1610612747  Los Angeles Lakers       4                  3                 14  Missed Shot             Step Back Jump shot  3PT Field Goal  Above the Break 3   Left Side Center(LC)          24+ ft.             27   -168    217                    1               0  20201006  MIA  LAL