使用熊猫转换为Json格式时的回溯

问题描述

我最近一直在尝试使用NBA API来获取击球图表数据。我将链接我正在使用的here的特定功能的文档。

我不断得到如下的追溯:

Traceback (most recent call last):
  File "nbastatsrecieve2.py",line 27,in <module>
    df.to_excel(filename,index=False)
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\pandas\core\generic.py",line 2023,in to_excel
    formatter.write(
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\pandas\io\formats\excel.py",line 730,in write
    writer = ExcelWriter(stringify_path(writer),engine=engine)
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\pandas\io\excel\_base.py",line 637,in __new__
    raise ValueError(f"No engine for filetype: '{ext}'") from err
ValueError: No engine for filetype: ''

这是我目前拥有的所有代码

from nba_api.stats.endpoints import shotchartdetail
import pandas as pd
import json

print('Player ID?')
playerid = input()
print('File Name?')
filename = input()

response = shotchartdetail.ShotChartDetail(
    team_id= 0,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.columns = headers

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

希望有人可以提供帮助,因为我是JSON格式的新手。

解决方法

之所以会这样,是因为filename没有扩展名。熊猫将使用文件名的扩展名(例如xlsxxls)(如果您不给它一个ExcelWriter)来理解用于此格式的正确lib。只需使用df.to_excel('filename.xlsx',index=False)之类的方法尝试一下,看看效果如何。