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

Python如何从嵌套JSON中提取信息并生成DataFrame

嵌套JSON多层级解析存入DataFrame解决思路
  • 充分利用pandas.json_normalize的高级参数
    多数人仅使用该方法的默认参数,实际上它的record_path、meta、max_level参数可适配多层嵌套场景:
    • record_path指定需要展开的嵌套数组的路径,可解决嵌套数组无法展开的问题
    • meta指定需要保留的上层字段,展开嵌套内容后不会丢失上层关联信息
    • 示例代码:
    import pandas as pd
    import json
    
    # 加载本地JSON数据
    with open("your_file.json", "r", encoding="utf-8") as f:
        data = json.load(f)
    
    # 假设嵌套数组路径为data -> user -> order_list,保留上层的user_id、user_name字段
    df = pd.json_normalize(
        data,
        record_path=["user", "order_list"],
        meta=[
            "user_id",
            ["user", "user_name"] # 上层嵌套字段用列表指定路径
        ],
        sep="." # 扁平化后的字段名用点分隔层级
    )
    
  • 自定义递归函数处理不规则深层嵌套
    当JSON结构高度不规则、嵌套层级无统一规律时,可写递归函数将所有嵌套节点拍平,把嵌套路径转化为字段名:
    def flatten_json(nested_obj, parent_key="", sep="."):
        items = []
        if isinstance(nested_obj, dict):
            for k, v in nested_obj.items():
                new_key = f"{parent_key}{sep}{k}" if parent_key else k
                items.extend(flatten_json(v, new_key, sep=sep).items())
        elif isinstance(nested_obj, list):
            for idx, item in enumerate(nested_obj):
                new_key = f"{parent_key}{sep}{idx}" if parent_key else str(idx)
                items.extend(flatten_json(item, new_key, sep=sep).items())
        else:
            items.append((parent_key, nested_obj))
        return dict(items)
    
    # 批量处理所有JSON对象后直接转DataFrame
    flatten_data = [flatten_json(item) for item in data]
    df = pd.DataFrame(flatten_data)
    
  • 分步骤拆分嵌套列
    如果仅部分列存在深层嵌套,可先做第一层解析,再单独处理嵌套列后拼接回原表:
    # 第一层解析得到包含嵌套列的DataFrame
    df_first = pd.json_normalize(data)
    # 单独处理嵌套列nested_col
    df_nested = pd.json_normalize(df_first["nested_col"]).add_prefix("nested_col.")
    # 拼接并删除原嵌套列
    df_final = pd.concat([df_first.drop("nested_col", axis=1), df_nested], axis=1)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:45:04