从API获取标头

2024-04-25 03:48:40 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图从这个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']的列表中,这样我就可以创建一个数据帧了?你知道吗

谢谢你!你知道吗


Tags: 数据fieldgetonresponsetypelabelheaders
2条回答

只需用一个特定的键从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)

输出看起来像

{
'field': ['Minutes', 'Off', 'On', 'DefRtg', 'NetRtg', 'OffRtg'], 
'label': ['Minutes', 'DefRtg', 'Players On', 'NetRtg', 'OffRtg', 'Players Off'], 
'type': ['decimal', 'number']
}

要反复阅读的列表理解应该做到以下几点:

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']

headers = [each['label'] for each in headers ]

相关问题 更多 >