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

如何将带嵌套子节点的Python API JSON转为pandas DataFrame并解包子节点

嵌套JSON转Pandas DataFrame子节点解包方案

直接使用pd.read_json处理嵌套JSON时,默认不会展开嵌套的字典、列表字段,会导致内容集中在同一列,使用pandas内置的json_normalize函数即可实现嵌套结构的自动展平。

步骤1:导入依赖并读取JSON数据

import pandas as pd
import json

# 本地JSON文件读取示例
with open("你的API返回JSON文件路径.json", "r", encoding="utf-8") as f:
    json_data = json.load(f)

# 如果是直接调用API获取的响应,直接用响应的json结果即可,示例:
# import requests
# resp = requests.get("你的API地址")
# json_data = resp.json()

步骤2:用json_normalize展平嵌套结构

场景1:JSON为纯嵌套字典/字典列表,无外层包裹字段

直接传入JSON数据即可自动展开所有子节点:

df = pd.json_normalize(json_data)
# 自定义层级分隔符,默认是.,可以改为下划线等
# df = pd.json_normalize(json_data, sep="_")

场景2:API返回有外层公共字段,业务数据存在指定列表字段中

比如常见的返回结构为{"code":200, "msg":"success", "data": [嵌套业务数据列表]},需要指定record_path参数定位到业务数据列表,还可以通过meta参数保留外层公共字段:

# 仅提取data字段下的业务数据并展平
df = pd.json_normalize(json_data, record_path="data")

# 如果需要保留外层的code、msg字段可以这么写
# df = pd.json_normalize(json_data, record_path="data", meta=["code", "msg"])

常见调整需求

  • 去掉层级字段前缀:比如展平后字段名为info.name、info.age,可以批量重命名去掉前缀
df.columns = df.columns.str.replace("info.", "", regex=False)
  • 遇到嵌套列表字段:先用df = df.explode("列表字段名")把列表拆成多行,再对该列做二次json_normalize处理后合并回原表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:27:01