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

如何规范化含列表与字典的深度嵌套JSON并生成目标DataFrame?

深度嵌套问卷JSON转扁平化DataFrame的最优方案

直接用pd.json_normalize的record_path和meta参数组合,就能一步实现完全扁平化,不需要额外的pivot或merge操作。

示例嵌套JSON结构

先模拟一份和需求匹配的问卷响应JSON:

sample_json = [
    {
        "responseID": "RES123",
        "surveyID": "SURV456",
        "ipAddress": "192.168.1.1",
        "timestamp": "2024-05-20T10:00:00",
        "latitude": 40.7128,
        "longitude": -74.0060,
        "responseSet": [
            {
                "questionText": "您对本次服务的满意度?",
                "answerValues": {"scale": 5, "text": "非常满意"}
            },
            {
                "questionText": "您是否会推荐给他人?",
                "answerValues": {"scale": 4, "text": "可能会"}
            }
        ]
    },
    {
        "responseID": "RES124",
        "surveyID": "SURV456",
        "ipAddress": "192.168.1.2",
        "timestamp": "2024-05-20T10:05:00",
        "latitude": 34.0522,
        "longitude": -118.2437,
        "responseSet": [
            {
                "questionText": "您对本次服务的满意度?",
                "answerValues": {"scale": 3, "text": "一般"}
            }
        ]
    }
]

核心实现代码

import pandas as pd

# 一步完成扁平化转换
df = pd.json_normalize(
    data=sample_json,
    record_path="responseSet",  # 指定要展开的嵌套列表字段
    meta=[  # 指定需要保留的顶层全局字段
        "responseID",
        "surveyID",
        "ipAddress",
        "timestamp",
        "latitude",
        "longitude"
    ],
    sep="_"  # 嵌套字段的分隔符,避免字段名冲突
)

代码说明

  • record_path="responseSet":直接将每个问卷的responseSet列表展开为多行,每个问题对应一条记录
  • meta参数:自动将顶层的全局字段(如responseID、surveyID)复制到每一行,无需手动合并
  • sep="_":将嵌套字段(如answerValues.scale)转换为answerValues_scale的格式,符合扁平化要求

最终输出效果

转换后的DataFrame会自动展开所有需要的字段:

questionTextanswerValues_scaleanswerValues_textresponseIDsurveyIDipAddresstimestamplatitudelongitude
0您对本次服务的满意度?5非常满意RES123SURV456192.168.1.12024-05-20T10:00:0040.7128-74.006
1您是否会推荐给他人?4可能会RES123SURV456192.168.1.12024-05-20T10:00:0040.7128-74.006
2您对本次服务的满意度?3一般RES124SURV456192.168.1.22024-05-20T10:05:0034.0522-118.2437

优势对比

相比之前用的record_path+pivot+merge方案,这个方法:

  1. 代码更简洁,一步到位
  2. 避免了中间数据处理步骤,效率更高
  3. 自动处理字段复制和嵌套展开,减少手动出错的可能

内容的提问来源于stack exchange,提问作者Irving Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:06:30