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

如何解析深度嵌套JSON数据并生成Pandas DataFrame?

解决深度嵌套JSON转Pandas DataFrame的问题

步骤1:加载JSON数据

先将JSON文件加载到Python环境中:

import json
import pandas as pd

# 读取目标JSON文件
with open('your_data.json', 'r', encoding='utf-8') as f:
    raw_data = json.load(f)

# 提取核心的result数组(这是我们需要处理的数据集)
target_data = raw_data['result']

步骤2:处理嵌套字段生成DataFrame

根据嵌套结构的不同,分两种场景处理:

场景1:out_msgs是数组,需要展开为多行

如果out_msgs包含多条消息,要让每条消息与对应的utime、in_msg数据关联,用json_normalize指定展开路径和保留的元数据:

df = pd.json_normalize(
    target_data,
    record_path='out_msgs',  # 指定要展开的数组字段
    meta=[
        'utime',
        ['in_msg', 'content'],  # 提取in_msg下的具体子字段
        ['in_msg', 'sender']    # 可根据实际嵌套层级继续添加
    ],
    errors='ignore'
)

# 可选:重命名列名让结构更清晰
df.rename(columns={
    'in_msg.content': 'in_msg_content',
    'in_msg.sender': 'in_msg_sender'
}, inplace=True)

场景2:out_msgs无需展开,保留为列表

如果只需要扁平化in_msg字段,out_msgs保持原数组格式:

# 直接扁平化in_msg,保留utime和out_msgs字段
df = pd.json_normalize(target_data)[['utime', 'in_msg.content', 'in_msg.sender', 'out_msgs']]

# 重命名列名
df.columns = ['utime', 'in_msg_content', 'in_msg_sender', 'out_msgs']

验证结果

运行代码后,执行print(df.head())即可查看生成的DataFrame结构是否符合需求。如果存在更深层级的嵌套,只需在meta参数中补充对应路径(如['in_msg', 'details', 'id'])即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:32:04