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

如何将嵌套JSON转换为Pandas DataFrame?是否需循环处理?

实现方法:无需手动循环,用Pandas内置函数即可转换

首先要注意:你提供的原始JSON存在语法错误(比如未用引号包裹的键、缺失逗号),需要先修正为合法JSON格式(示例见下方代码块),否则Pandas无法正常解析。

步骤1:修正原始JSON为合法格式

{
  "id": 1,
  "job": {
    "name": "g",
    "documents": [
      {
        "name": "a.pdf",
        "pages": [
          {
            "detail": "page_detail_a",
            "notes": [
              {
                "note": "note_a",
                "references": [
                  {
                    "detail_a_a": ".....",
                    "detail_a_n": "....."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "name": "b.pdf",
        "pages": [
          {
            "detail": "page_detail_b",
            "notes": [
              {
                "note": "note_b",
                "references": [
                  {
                    "detail_b_a": ".....",
                    "detail_b_n": "....."
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

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

使用Pandas的json_normalize函数,指定嵌套层级的record_path和需要保留的元数据列,一次性展开所有嵌套数组:

import pandas as pd

# 假设修正后的JSON数据存储在data变量中
df = pd.json_normalize(
    data,
    # 指定最内层数组的路径:job→documents→pages→notes→references
    record_path=['job', 'documents', 'pages', 'notes', 'references'],
    # 指定需要保留的上层元数据列
    meta=[
        'id',
        ['job', 'name'],
        ['job', 'documents', 'name'],
        ['job', 'documents', 'pages', 'detail']
    ]
)

步骤3:重塑数据到目标格式

通过rename调整列名匹配目标格式,再用melt函数将横向的reference字段转为纵向行:

# 重命名列,对齐目标格式
df = df.rename(columns={
    'id': 'job',
    'job.name': 'name',
    'job.documents.name': 'document.name',
    'job.documents.pages.detail': 'page.detail'
})

# 将所有reference字段转为行
final_df = df.melt(
    id_vars=['job', 'name', 'document.name', 'page.detail'],
    var_name='reference'  # 对应目标格式的reference列
)

# 保留需要的列
final_df = final_df[['job', 'name', 'document.name', 'page.detail', 'reference']]

执行完以上步骤后,final_df就是你需要的目标格式DataFrame,全程无需手动循环遍历JSON结构。

内容的提问来源于stack exchange,提问作者Tlaloc-ES

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:50:46