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

Python嵌套JSON转Excel格式不符问题:解决方案咨询

嵌套JSON转标准化DataFrame并导出Excel的解决方案

核心思路

针对含字典、列表类型字段的嵌套JSON,需先扁平化字典字段,再展开列表字段,将多层结构映射为二维表格后,即可导出符合预期的Excel文件。

示例实现

假设你已将JSON数据加载到json_data变量中,以下是通用处理代码:

1. 基础嵌套+列表展开(适配多数场景)

import pandas as pd

# 1. 扁平化顶层嵌套的字典字段(如contact这类嵌套结构)
df = pd.json_normalize(json_data, sep='_')

# 2. 展开列表类型字段(如orders),每个列表项生成独立行
df = df.explode('orders', ignore_index=True)

# 3. 若展开后的列表项仍是字典,继续扁平化该字段
if isinstance(df['orders'].iloc[0], dict):
    df = pd.concat([df.drop('orders', axis=1), df['orders'].apply(pd.Series)], axis=1)

# 4. 导出到Excel(取消默认索引列)
df.to_excel('result.xlsx', index=False)

2. 深层嵌套列表的直接处理

如果列表字段位于多层嵌套内(如user.orders),可直接用json_normalize的参数指定展开路径:

df = pd.json_normalize(
    json_data,
    record_path=['user', 'orders'],  # 指向需要展开的嵌套列表字段
    meta=[['user', 'id'], ['user', 'name'], ['user', 'contact', 'email']],  # 保留关联的顶层字段
    sep='_'  # 嵌套字段的列名分隔符,生成如user_id这类列名
)
df.to_excel('deep_nested_result.xlsx', index=False)

关键说明

  • pd.json_normalize():自动将嵌套字典展开为扁平列,sep参数可自定义列名格式
  • df.explode():将列表类型的单元格内容拆分为多行,同步保留其他字段的对应值
  • 若你的JSON结构和示例不同,只需调整record_path、meta参数或需要展开/扁平化的字段名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:55:20