You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:49:54