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

如何从嵌套JSON提取数据并存储到Pandas DataFrame?

如何从嵌套JSON分类树提取数据到Pandas DataFrame?

嘿,这个需求很常见!要把这种嵌套的树形分类JSON转成Pandas DataFrame,核心就是遍历整个树形结构,把每个分类节点的信息连同它的父分类ID一起收集起来,这样就能得到一个扁平的、方便后续分析的表格。下面是具体的实现步骤:

步骤1:导入依赖库

首先确保你已经安装了pandas,然后导入需要的模块:

import pandas as pd
import json

步骤2:加载JSON数据

如果你的JSON是字符串形式,用json.loads()解析;如果是本地文件,用json.load()读取。这里直接使用你提供的JSON示例:

# 你的嵌套JSON数据
json_data = {
  "SuccessResponse": {
    "Head": {
      "RequestAction": "GetCategoryTree",
      "RequestId": "",
      "ResponseType": "Categories",
      "Timestamp": "2018-05-19T00:30:55+08:00"
    },
    "Body": [
      {
        "categoryId": 1902,
        "children": [
          {
            "categoryId": 10001930,
            "children": [
              {"categoryId": 10001958,"children": [],"leaf": true,"name": "Accessories","var": false},
              {"categoryId": 10001957,"children": [],"leaf": true,"name": "Backpacks","var": false},
              {"categoryId": 10001956,"children": [],"leaf": true,"name": "Backpacks Trolley","var": false},
              {"categoryId": 10001955,"children": [],"leaf": true,"name": "Bags","var": false}
            ],
            "leaf": false,
            "name": "Kids Bags",
            "var": false
          },
          # 省略其他分类节点内容
        ],
        "leaf": false,
        "name": "Bags & Luggage",
        "var": false
      }
    ]
  }
}

# 提取根分类节点(Body里的内容)
root_categories = json_data['SuccessResponse']['Body']

步骤3:递归遍历树形结构

写一个递归函数,遍历每个分类节点,收集节点的核心信息,同时记录父分类ID(用来体现层级关系):

def collect_category_data(node, parent_id=None):
    # 存储所有分类数据的列表
    data = []
    for category in node:
        # 提取当前分类的关键字段
        category_info = {
            'categoryId': category['categoryId'],
            'name': category['name'],
            'leaf': category['leaf'],
            'var': category['var'],
            'parent_id': parent_id  # 根分类的父ID设为None
        }
        data.append(category_info)
        
        # 如果当前分类有子节点,递归遍历子节点
        if not category['leaf'] and category['children']:
            data.extend(collect_category_data(category['children'], parent_id=category['categoryId']))
    return data

# 调用函数收集所有分类数据
category_list = collect_category_data(root_categories)

步骤4:转换为Pandas DataFrame

把收集到的列表直接转换为DataFrame,还可以调整列的顺序让结构更清晰:

df = pd.DataFrame(category_list)
# 调整列顺序,优先展示分类ID、名称、父ID
df = df[['categoryId', 'name', 'parent_id', 'leaf', 'var']]

最终效果

转换后的DataFrame会像这样(片段示例):

categoryIdnameparent_idleafvar
1902Bags & LuggageNoneFalseFalse
10001930Kids Bags1902FalseFalse
10001958Accessories10001930TrueFalse
10001957Backpacks10001930TrueFalse

这样你就能清晰看到每个分类的层级关系,方便后续的筛选、统计或其他分析操作啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:12:34