Отправьте таблицу, очищенную по запросам, в книгу/лист Excel

#python #excel #python-requests

Вопрос:

Новичок здесь,

Я поскреб стол, используя запросы от nhl.com, и я хотел бы отправить его в Excel.

 import requests  url = 'https://api.nhle.com/stats/rest/en/team/powerplay?isAggregate=falseamp;isGame=falseamp;sort=[{"property":"powerPlayPct","direction":"DESC"},{"property":"teamId","direction":"ASC"}]amp;start=0amp;limit=50amp;factCayenneExp=gamesPlayed>=1amp;cayenneExp=gameTypeId=2 and homeRoad="H" and seasonId=20212022'  data = requests.get(url).json()  for i in data['data']:  print('{:lt;30} {:.1f}'.format(i['teamFullName'], i['powerPlayPct']*100))  

Я использовал запросы вместо панд из-за динамического формата на nhl.com для очистки таблиц, и я не чувствую, что это создает фрейм данных (как в панд) для отправки с помощью df.to_excel.

Как я мог это сделать?

Ответ №1:

Попробуйте использовать pd.json_normalize и передать параметр record_path как «данные»

 import requests import pandas as pd  url = 'https://api.nhle.com/stats/rest/en/team/powerplay?isAggregate=falseamp;isGame=falseamp;sort=[{"property":"powerPlayPct","direction":"DESC"},{"property":"teamId","direction":"ASC"}]amp;start=0amp;limit=50amp;factCayenneExp=gamesPlayed>=1amp;cayenneExp=gameTypeId=2 and homeRoad="H" and seasonId=20212022' data = requests.get(url).json()  df = pd.json_normalize(data, record_path='data')  # Do whatever math you want here  df.to_excel('nhl_data.xlsx', index=False)  

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

1. Спасибо большое! Я попробую это сделать…

2. Это работает, но так как я хочу отправить его прямо на определенном листе, он создает другой файл с тем же именем, который стирает другие листы. Есть ли что-то, чего я здесь не делаю прямо сейчас?