从API获取标题

时间:2019-04-25 16:09:28

标签: python json

因此,我试图从此API抓取一个表: https://api.pbpstats.com/get-wowy-combination-stats/nbaTeamId=1610612743&Season=201819&SeasonType=Playoffs&PlayerIds=203999,1627750,200794

但是对于我的最终数据框,我很难将标头作为一个像['Players On', 'Players Off', 'Minutes', 'NetRtg', 'OffRtg', 'DefRtg']这样的好列表,因为标头是它们自己的类,而不是其他类results的一部分。

我当前的代码如下:

import requests


url = 'https://api.pbpstats.com/get-wowy-combination-stats/nba?TeamId=1610612743&Season=2018-19&SeasonType=Playoffs&PlayerIds=203999,1627750,200794'

response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
# grab table
table = response.json()['results'][0]
#grab headers
headers = response.json()['headers']

当我print(headers)得到[{'field': 'On', 'label': 'Players On'}, {'field': 'Off', 'label': 'Players Off'}, {'field': 'Minutes', 'label': 'Minutes', 'type': 'number'}, {'field': 'NetRtg', 'label': 'NetRtg', 'type': 'decimal'}, {'field': 'OffRtg', 'label': 'OffRtg', 'type': 'decimal'}, {'field': 'DefRtg', 'label': 'DefRtg', 'type': 'decimal'}]时。

这是将它们放入['Players On', 'Players Off', 'Minutes', 'NetRtg', 'OffRtg', 'DefRtg']这样的列表中的好方法,这样我就可以创建一个数据框了。

谢谢!

2 个答案:

答案 0 :(得分:2)

只需从["value1","value2"]列表中提取具有特定键的所有值 然后制作你的字典

headers

输出看起来像

import requests

url = 'https://api.pbpstats.com/get-wowy-combination-stats/nba?TeamId=1610612743&Season=2018-19&SeasonType=Playoffs&PlayerIds=203999,1627750,200794'

response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
#grab table
table = response.json()['results'][0]

#grab headers
headers = response.json()['headers']

#Extracting all values with every key into a dictionary
results = {}
for header in headers:
    for k,v in header.items():
        results.setdefault(k,[])
        results[k].append(v)

#Remove duplicate elements from the list of values
results = {k:list(set(v)) for k,v in results.items()}
print(results)

答案 1 :(得分:1)

列表理解以进行迭代应该可以解决问题:

heroku run python manage.py migrate