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

MLB JSON数据处理:如何访问嵌套列表中字典的runner id值?

解决MLB JSON数据中提取Runner ID的问题

错误原因

你遇到的报错是因为play['runners']是数组(列表)类型(JSON里的方括号[]表示数组),而你试图用字符串'details'作为索引访问数组,数组仅支持整数索引或切片,因此触发错误。

解决方法

方法1:手动嵌套循环提取

修正循环逻辑,遍历runners数组中的每个条目,再逐层访问嵌套字段:

import pandas as pd

data = []
plays = j['liveData']['plays']['allPlays']
for play in plays:
    # 遍历当前play下的所有runner条目
    for runner_item in play['runners']:
        # 逐层提取runner的id
        runner_id = runner_item['details']['runner']['id']
        data.append(runner_id)

# 转换为DataFrame
df = pd.DataFrame(data, columns=['runner_id'])

方法2:用json_normalize高效提取

利用pandas.json_normalize的record_path参数直接指定嵌套数组的提取路径,无需手动循环:

import pandas as pd

# 提取runner的核心字段,同时可附加关联元数据
df = pd.json_normalize(
    j['liveData']['plays']['allPlays'],
    # 指定要展开的嵌套数组路径:runners -> details -> runner
    record_path=['runners', 'details', 'runner'],
    # 可选:提取其他关联字段作为元数据列
    meta=[
        ['runners', 'details', 'event'],
        ['runners', 'details', 'playIndex']
    ]
)
# 最终df包含id、fullName,以及指定的event、playIndex字段

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:42:28