Mis*_*ter 4 python dataframe web-scraping python-3.x
尝试从列表创建数据框但出现错误“'NoneType'对象没有属性'keys'”
import numpy as np
import pandas as pd
import requests
import json
from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder
person = []
position = []
skaterstats = []
person = []
player_id = {}
for game_id in range(2018020001, 2018020002, 1):
url = 'https://statsapi.web.nhl.com/api/v1/game/{}/feed/live'.format(game_id)
r = requests.get(url)
game_data = r.json()
for homeaway in ['home','away']:
player_dict = game_data.get('liveData').get('boxscore').get('teams').get(homeaway).get('skaters')
player_id[homeaway] = player_dict
for homeaway in player_id:
for playerID in player_id[homeaway]:
play_dict_person = game_data.get('liveData').get('boxscore').get('teams').get(homeaway).get('players').get('ID' + str(playerID)).get('person')
play_dict_position = game_data.get('liveData').get('boxscore').get('teams').get(homeaway).get('players').get('ID' + str(playerID)).get('position')
play_dict_skaterstats = game_data.get('liveData').get('boxscore').get('teams').get(homeaway).get('players').get('ID' + str(playerID)).get('stats').get('skaterStats')
person.append(play_dict_person)
position.append(play_dict_position)
skaterstats.append(play_dict_skaterstats)
df_person = pd.DataFrame(person).head()
df_position = pd.DataFrame(position).head()
df_skaterstats = pd.DataFrame(skaterstats).head()
----> 3 df_skaterstats = pd.DataFrame(skaterstats).head()
AttributeError: 'NoneType' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)
该错误仅发生在此 DataFrame 上,我已检查路径应该正确无误。如果需要任何指导,请链接到下面的 API。
这是API:https://statsapi.web.nhl.com/api/v1/game/2017020002/feed/live
有些球员没有统计数据,所以play_dict_skaterstats对他们来说就是None。您可能需要更换
skaterstats.append(play_dict_skaterstats)
Run Code Online (Sandbox Code Playgroud)
和
if play_dict_skaterstats:
skaterstats.append(play_dict_skaterstats)
Run Code Online (Sandbox Code Playgroud)
跳过这些情况
或者您可能需要为此情况设置默认值,例如
if not play_dict_skaterstats:
play_dict_skaterstats = {}
play_dict_skaterstats['timeOnIce'] = None
play_dict_skaterstats['assists'] = None
...
skaterstats.append(play_dict_skaterstats)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21372 次 |
| 最近记录: |