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

将JSON导入Pandas DataFrame时部分数据丢失的问题排查

问题原因

你当前的record_path只指定了['gameList'],只会把每个游戏会话(带startingTime和inputType的条目)拆成一行,但每个会话里的Rounds是嵌套列表,Pandas会把它存成单元格里的列表对象,导出CSV时这种嵌套结构会丢失信息,所以多个回合的数据没显示出来。

解决方法

需要两层嵌套展开:先定位到gameList,再把每个gameList下的Rounds作为子记录展开,同时保留上层的startingTime和inputType作为元数据。

修改后的代码如下:

import json
import pandas as pd

with open('/Users/me/Downloads/databackup.json', 'r') as f:
    data = json.load(f)  # 直接用json.load更简洁

# 关键:record_path指定嵌套的Rounds,meta指定上层要保留的字段
multiple_level_data = pd.json_normalize(
    data,
    record_path=['gameList', 'Rounds'],  # 先到gameList,再展开里面的Rounds
    meta=[
        ['gameList', 'startingTime'],
        ['gameList', 'inputType']
    ],
    meta_prefix='session_',  # 给上层字段加前缀区分
    record_prefix='round_'   # 给回合字段加前缀
)

multiple_level_data.to_csv('GameData.csv', index=False)
df = pd.read_csv("GameData.csv")
print(df)
效果说明

运行后每个回合会单独占一行,同时保留对应的会话时间戳和输入类型:

  • session_gameList.startingTime:对应原数据的startingTime
  • session_gameList.inputType:对应原数据的inputType
  • round_durationSeconds、round_score:每个回合的时长和分数
  • round_platformCount.normalPlatforms等:嵌套的平台/敌人统计数据也会被自动展开成单独列

这样所有回合的数据都能完整保存到CSV和DataFrame里,不会丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:01:11