You need to enable JavaScript to run this app. 如何从含字典的三层嵌套JSON生成指定格式的pandas DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

如何从含字典的三层嵌套JSON生成指定格式的pandas DataFrame

解决方案

你的问题核心是调用json_normalize时没有指定record_path参数,导致嵌套的分组数组没有被展开,仅作为整体存储。以下是两种目标格式的实现方法:

格式1:展开多行

直接通过json_normalize的路径参数关联外层id和内层分组数据:

import pandas as pd
import json

path = 'mypath'
with open(path, 'r', encoding='utf-8') as f:
    data = json.load(f)

# 展开嵌套数组
df_expand = pd.json_normalize(
    data=data['data'],
    record_path=['groups', 'data'],  # 指定嵌套数组的层级路径
    meta=['id'],  # 保留外层的id字段,关联到每个分组记录
    errors='ignore'
)

# 统一分组名字段(如果你的实际数据中键名统一都是group或group_name,可省略这一步)
df_expand['group'] = df_expand['group'].fillna(df_expand['group_name'])
df_expand = df_expand.drop(columns=['group_name'])

# 调整列顺序得到最终结果
df_format1 = df_expand[['id', 'group', 'year_joined']]

格式2:单行聚合

在格式1的结果基础上按id分组聚合即可:

df_format2 = df_format1.groupby('id', as_index=False).agg(
    group=('group', ','.join),
    year_joined=('year_joined', ','.join)
)

上述方法都是pandas内置的矢量化操作,处理大数据集的效率远高于手动循环遍历。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:51:01