我正在尝试为一个项目编写代码,该项目从JSON API提取多个数据片段。我已经编写了代码,它将把它缩小到我想要的部分,并提取给定键的完整列表(siteSlatePlayerId)。然而,我试图让它同时拉“name”
例:100031,勒布朗·詹姆斯我如何更改此循环(或者如果您推荐另一种方法)以同时提取“siteSlatePlayerId”和“name”?任何帮助都将不胜感激
df = pd.read_json('https://resultsdb-api.rotogrinders.com/api/slates?start=11/03/2019')
df2 = df
df3 = df2[(df2['slateTypeName'] == 'Classic') & (df2['sport'] == 3)]
#df3.to_csv("output3.csv")
Player_Slate = pd.DataFrame.from_dict(df3["slatePlayers"])
print(Player_Slate)
###########################################################
# Get Unique ID for player
###########################################################
def get_playerid(data, key):
for key in data:
try:
if (key == 'siteSlatePlayerId'):
return (data[key])
except:
print('error')
return 0
for siteSlatePlayerId in Player_Slate.slatePlayers:
playerid = [get_playerid(x, "siteSlatePlayerId") for x in siteSlatePlayerId]
print(playerid)
这将为我提供所有玩家ID: ['13689965', '13689969', '13689973', '13689977', '13689982', '13689986', '13689989', '13689993', '13689997', '13690002', '13690005', '13690007', '13690011', '13690013', '13690018', '13690022', '13690026', '13690028', '13690030', '13690034', '13690037', '13690041', '13690045', '13690050', '13690054', '13690059', '13690062', '13690066', '13690070', ‘13690074’、‘13690078’、‘13690081’、‘13690084’、‘13690088’、‘13690092’、‘13690096’、
首先,获得一个干净的df:
或者
players_df = pd.json_normalize(df['slatePlayers'].str[0])
,如果您愿意的话pandas.json_normalize将半结构化JSON数据规范化为平面表然后,您可以得到您想要的:
完整代码:
相关问题 更多 >
编程相关推荐