2 回答
TA贡献1827条经验 获得超7个赞
它看起来像一个大列表,包含字典列表。您可以使用for-each-loop
.
for entry in list:
然后,您可以单独查看每个条目并检查它们是否eventTypeId
等于shot
或goal
:
if entry["result"]["eventTypeId"] == "SHOT":
在这种情况下,您可以像这样提取 X 和 Y 坐标的值:
x = entry["coordinates"]["x"] y = entry["coordinates"]["y"]
之后,您可以使用这些坐标来做任何您想做的事情。
TA贡献1796条经验 获得超4个赞
您可以遍历列表,通过将所需数据放入字典中以使用 pandas 构建表。
import requests as rq
import pandas as pd
GAME_ID = "2017021121" #Game ID indicates which game I want to look at...first 4 digits is the year, second two the point in season, (01 Pre, 02 Reg, 03 Playoffs, 04 All Star)
#URL to access the coordinates of every event in given game...comes in nested dictionary form
url = f"https://statsapi.web.nhl.com/api/v1/game/{GAME_ID}/feed/live"
game = rq.get(url).json()
game = game['liveData']['plays']['allPlays']
rows = []
for each in game:
if each['result']['event'] in ['Shot','Goal']:
print(each['result']['event'])
row = {
'result':each['result']['event'],
'x':each['coordinates']['x'],
'y':each['coordinates']['y']}
rows.append(row)
df = pd.DataFrame(rows)
输出:
print(df)
result x y
0 Shot 76.0 -8.0
1 Shot -41.0 -24.0
2 Shot 69.0 -1.0
3 Shot 37.0 30.0
4 Shot -60.0 1.0
5 Goal 43.0 -20.0
6 Shot -85.0 6.0
7 Shot -83.0 11.0
8 Shot -85.0 -5.0
9 Shot 81.0 -1.0
10 Shot -84.0 -7.0
11 Shot -81.0 -3.0
12 Shot -57.0 12.0
13 Shot 74.0 -14.0
14 Goal 64.0 0.0
15 Shot 68.0 2.0
16 Shot 73.0 5.0
17 Shot 63.0 -2.0
18 Shot -26.0 -16.0
19 Shot -84.0 -2.0
20 Shot -74.0 36.0
21 Shot 83.0 6.0
22 Shot -88.0 7.0
23 Shot -39.0 30.0
24 Shot -69.0 -22.0
25 Shot 65.0 32.0
26 Shot 80.0 -3.0
27 Shot -70.0 -6.0
28 Shot -87.0 17.0
29 Shot -29.0 -20.0
.. ... ... ...
47 Shot 81.0 1.0
48 Shot -82.0 0.0
49 Shot 38.0 -28.0
50 Shot 66.0 -9.0
51 Shot 49.0 5.0
52 Shot -48.0 -12.0
53 Shot 39.0 20.0
54 Goal 75.0 -9.0
55 Shot -84.0 -7.0
56 Shot 88.0 -28.0
57 Shot 41.0 -20.0
58 Shot -41.0 12.0
59 Shot 40.0 7.0
60 Shot 72.0 -4.0
61 Goal 86.0 7.0
62 Shot -77.0 -8.0
63 Shot 34.0 -32.0
64 Shot -79.0 -10.0
65 Shot 61.0 6.0
66 Shot -43.0 17.0
67 Shot -41.0 -5.0
68 Shot -35.0 19.0
69 Shot -45.0 -11.0
70 Shot -77.0 -8.0
71 Shot 80.0 -1.0
72 Shot -87.0 7.0
73 Shot 84.0 24.0
74 Shot 76.0 7.0
75 Goal 83.0 -18.0
76 Shot -81.0 -5.0
[77 rows x 3 columns]
添加回答
举报