【发布时间】:2020-10-01 15:48:55
【问题描述】:
我正在使用 pandas 将 NBA API JSON 格式转换为 csv,但遇到回溯错误。现在我会注意到几天前我遇到了另一个回溯错误,但这次不同。
这个错误特别困扰我,因为相同的代码在程序的早期工作。这是控制台中的错误: Traceback(最近一次调用最后一次):
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')
希望大家能帮忙,谢谢。
【问题讨论】:
-
给我给你这个错误的gameid。我试过了,代码对我来说很好。
-
@chitown88 尝试任何季后赛,那里似乎没有任何数据。 0041900404
-
我明天试一试。季后赛之类的可能有一个附加参数,不过我会研究一下。
-
@chitown88 你的假设可能是对的