Ошибка несоответствия значений при преобразовании с использованием Pandas

#python #pandas #dataframe #nba-api

#python #pandas #Фрейм данных #nba-api

Вопрос:

вот ошибка несоответствия, которую я продолжаю получать. Я ввожу «202710».

 Traceback (most recent call last):
  File "nbastatsrecieveit.py", line 29, in <module>
    df.columns = headers
  File "C:Users*AppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagespandascoregeneric.py", line 5149, in __setattr__
    return object.__setattr__(self, name, value)
  File "pandas_libsproperties.pyx", line 66, in pandas._libs.properties.AxisProperty.__set__
  File "C:Users*AppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagespandascoregeneric.py", line 564, in _set_axis
    self._mgr.set_axis(axis, labels)
  File "C:Users*AppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagespandascoreinternalsmanagers.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 shotchartdetail
import pandas as pd
import json
from openpyxl import Workbook

print('Player ID?')
playerid = input()

filename = str(playerid)   '.xlsx'

response = shotchartdetail.ShotChartDetail(
    team_id= 0,
    context_measure_simple = 'FGA',
    #last_n_games = numGames,
    game_id_nullable = '0041900403',
    player_id= playerid
)

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 = pd.DataFrame(rows)
df.columns = headers

# write to excel file
df.to_excel(filename, index=False)
  

Ответ №1:

Это потому, что ваш df идентификатор пуст 202710 . Обработка исключений решит проблему здесь-

 df = pd.DataFrame(rows)
try:
    df.columns = headers
except:
    pass
  

Комментарии:

1. Я думаю, что я где-то ошибаюсь, когда вызываю API