如何解析NBA赛事赔率嵌套JSON并转换为Pandas DataFrame?
解决NBA赛事赔率嵌套JSON转结构化DataFrame问题
直接用pd.json_normalize的record_path和meta参数就能一次性展开嵌套的games字段,无需手动循环。如果markets存在更深层嵌套,可再嵌套调用json_normalize处理。
完整代码示例
import requests import pandas as pd # 1. 请求获取JSON数据(替换为你的实际接口URL) url = "你的NBA赔率接口URL" response = requests.get(url) data = response.json() # 2. 展开games字段,提取基础赛事信息 games_df = pd.json_normalize( data, record_path="games", # 指定要展开的嵌套列表字段 meta=[], # 若上层有全局字段(如当日日期date),可在此添加,例:meta=["date"] errors="ignore" ) # 3. 处理markets嵌套字段(若markets为每个game下的列表结构) markets_expanded = [] for idx, row in games_df.iterrows(): # 展开当前赛事的markets数据 market_df = pd.json_normalize(row["markets"], errors="ignore") # 关联当前赛事的标识字段 market_df["gameId"] = row["gameId"] market_df["homeTeamId"] = row["homeTeamId"] market_df["awayTeamId"] = row["awayTeamId"] markets_expanded.append(market_df) # 合并所有markets数据为最终结构化DataFrame final_df = pd.concat(markets_expanded, ignore_index=True) # 查看结果 print(final_df.head())
关键说明
- record_path:直接指向需要展开的嵌套列表字段(此处为
games),省去手动遍历循环的繁琐。 - meta参数:若原始JSON上层有需要保留的全局字段,直接添加到meta列表中,会自动关联到每一条赛事数据。
- markets嵌套处理:针对每个赛事下的
markets列表,展开后关联赛事唯一标识(如gameId),确保数据关联完整性。 - errors="ignore":避免因部分字段缺失导致解析报错。
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

