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

如何从含列表的嵌套字典创建指定格式的Pandas DataFrame?

解决方案:将嵌套字典转换为指定格式的DataFrame/CSV

目标格式

需要生成的DataFrame/CSV结构如下:

AppidstagesrequestCpurequestMemory
appName123dev10001024
appName123staging32001024
appName2456dev20002048
appName2456prod40004096

输入数据结构

输入为包含多个应用的嵌套字典,每个应用结构一致:

test_data = {
    "appName": {
        "id": "123",
        "stages": {
            "dev": [{"request.cpu": 1000}, {"request.memory": 1024}],
            "staging": [{"request.cpu": 3200}, {"request.memory": 1024}]
        }
    },
    "appName2": {
        "id": "456",
        "stages": {
            "dev": [{"request.cpu": 2000}, {"request.memory": 2048}],
            "prod": [{"request.cpu": 4000}, {"request.memory": 4096}]
        }
    }
}

问题分析

原代码无法拆分stages下的资源列表,且将stages的键转为列,不符合目标格式。核心问题是需要扁平化嵌套结构,将每个stage的信息拆分为单独行。

实现代码

import pandas as pd

test_data = {
    "appName": {
        "id": "123",
        "stages": {
            "dev": [{"request.cpu": 1000}, {"request.memory": 1024}],
            "staging": [{"request.cpu": 3200}, {"request.memory": 1024}]
        }
    },
    "appName2": {
        "id": "456",
        "stages": {
            "dev": [{"request.cpu": 2000}, {"request.memory": 2048}],
            "prod": [{"request.cpu": 4000}, {"request.memory": 4096}]
        }
    }
}

# 初始化空列表存储扁平化后的数据
flat_records = []

# 遍历每个应用
for app_name, app_details in test_data.items():
    app_id = app_details["id"]
    # 遍历应用下的每个stage
    for stage_name, resource_list in app_details["stages"].items():
        # 合并资源列表中的两个字典,便于提取值
        resource_dict = {}
        for item in resource_list:
            resource_dict.update(item)
        # 组装成目标格式的单行数据
        flat_row = {
            "App": app_name,
            "id": app_id,
            "stages": stage_name,
            "requestCpu": resource_dict["request.cpu"],
            "requestMemory": resource_dict["request.memory"]
        }
        flat_records.append(flat_row)

# 转换为DataFrame
result_df = pd.DataFrame(flat_records)
print(result_df)

# 保存为CSV(可选)
# result_df.to_csv("app_resource_config.csv", index=False)

代码说明

  1. 遍历应用:逐个取出应用名称和对应的基础信息(id、stages)
  2. 遍历Stage:对每个应用下的每个stage,拆分出stage名称和资源列表
  3. 合并资源字典:将资源列表中的两个小字典合并,统一获取request.cpu和request.memory的值
  4. 组装扁平数据:将每个stage的信息整理成目标格式的字典,加入到列表中
  5. 生成DataFrame:用扁平化后的列表直接生成符合要求的DataFrame,也可直接导出为CSV

运行代码后,输出的DataFrame完全匹配目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:16