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

修改parse_data函数将嵌套赛事JSON解析为指定结构pandas DataFrame

问题根因

原代码报错的核心原因是tactics字段下的lineup是存储多名上场球员信息的数组结构,不是单个字典对象,直接按字典键路径访问数组内的player、position字段必然触发类型错误。要实现预期的一行对应一名球员的输出,需要遍历lineup数组的每个元素,复用事件级公共字段生成对应行。

修改后的函数代码
import json
import pandas as pd

def parse_data(shots):
    all_events = []
    for s in shots:
        # 保留原有的调试打印逻辑
        print(json.dumps(s, sort_keys=True, indent=4))
        # 提前提取单条事件的公共字段,该事件下所有球员行复用这些值
        common_attrs = {
            "possession": s['possession'],
            "possession_team": s['possession_team']['name'],
            "play_pattern": s['play_pattern']['name'],
            "formation": s['tactics']['formation']
        }
        # 遍历lineup数组,每个球员生成单独一行数据
        for player_item in s['tactics']['lineup']:
            row = common_attrs.copy()
            row["player_name"] = player_item['player']['name']
            row["player_position"] = player_item['position']['name']
            all_events.append(row)
    return pd.DataFrame(all_events)
逻辑说明
  • 单条事件先提取公共属性,避免重复编写相同取值的字段提取逻辑
  • 嵌套遍历lineup数组的每个球员条目,单独提取球员姓名、位置信息
  • 公共属性拷贝后和球员专属字段合并为一行,保证事件级字段在所有对应球员行中复用
  • 所有条目收集完成后转换为DataFrame返回,输出结构和预期完全一致:单事件下每名球员单独占一行,字段顺序、取值完全匹配要求的样例结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:36:13