访问数据框内的嵌套字典数据

时间:2020-05-12 17:47:21

标签: python json dataframe python-requests

我正在尝试从OHL统计信息页面的片段中访问球员数据。下面的代码为我提供了我所需的一切,

url = 'https://ontariohockeyleague.com/stats/players/68'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')

statviewtype_url = "http://lscluster.hockeytech.com/feed/?feed=modulekit&view=statviewtype&type=topscorers&key=%s&fmt=json&client_code=ohl&lang=en&league_code=&season_id=68&first=0&limit=100&sort=active&stat=all&order_direction="

key = soup.find('div', id='stats')['data-feed_key']

r = requests.get(statviewtype_url % key)
statviewtype_data = json.loads(r.text)
d = json.loads(r.text)
df = pd.DataFrame(d)
print(df)

输出:

Copyright     {'required_copyright': 'Official statistics pr...
Parameters    {'feed': 'modulekit', 'view': 'statviewtype', ...
Statviewtype  [{'player_id': '7889', 'shortname': 'M. Rossi'...

我想要的是Statviewtype词典(?我以为就是这样)。但是,当我尝试使用print(df['Statviewtype'])之类的东西访问它时,会出现错误。我是否混淆了数据类型?我会简化吗?

1 个答案:

答案 0 :(得分:1)

您的数据框具有3个索引['Copyright', 'Parameters', 'Statviewtype']和1列['SiteKit']。为了阅读Statviewtype,您需要:

df.loc['Statviewtype', 'SiteKit'][0]

指定索引Statviewtype和列SiteKit。另请注意最后的[0]。那是因为字典在列表中,而字典是其中的唯一元素。但是一旦完成,您就可以开始:

In []: df.loc['Statviewtype', 'SiteKit'][0].keys()
Out[]: dict_keys(['player_id', 'shortname', 'first_name', ... , 'namelink', 'teamlink', 'photo'])
相关问题