You need to enable JavaScript to run this app. 将API返回的嵌套字典列表转换为指定格式Pandas DataFrame的最优方法
优惠活动
大模型
产品
解决方案
定价
更多

将API返回的嵌套字典列表转换为指定格式Pandas DataFrame的最优方法

最优实现方案

直接通过遍历预处理+Pandas构造DataFrame即可,逻辑简洁性能最优,兼容不同条目包含不同属性键的场景:

完整实现代码

import pandas as pd

# 你的原始API返回数据
items = [
    {
        "identification":{
            "id":"ID1",
            "FCID":"FCID1"
        },
        "attributes":[
            {"key":"KEY1","value":"VALUE11"},
            {"key":"KEY2","value":"VALUE12"},
            {"key":"KEY3","value":"VALUE13"}
        ]
    },
    {
        "identification":{
            "id":"ID2",
            "FCID":"FCID2"
        },
        "attributes":[
            {"key":"KEY1","value":"VALUE21"},
            {"key":"KEY2","value":"VALUE22"},
            {"key":"KEY3","value":"VALUE23"},
            {"key":"KEY4","value":"VALUE24"}
        ]
    }
]

# 第一步:预处理扁平化数据结构
processed_rows = []
for item in items:
    # 提取基础标识字段
    row = item["identification"].copy()
    # 合并属性键值对
    row.update({attr["key"]: attr["value"] for attr in item["attributes"]})
    processed_rows.append(row)

# 第二步:构造DataFrame
df = pd.DataFrame(processed_rows)

# (按需执行)匹配你示例的ID/FCID格式要求
df["ID"] = df["id"].str.strip("ID").astype(int)
df["FCID"] = df["FCID"].str.replace("FCID", "F")
# 调整列顺序,缺失值自动填充为NaN,可按需转成None
df = df[["ID", "FCID", "KEY1", "KEY2", "KEY3", "KEY4"]].where(pd.notnull(df), None)

输出结果

运行后得到的df完全符合要求:

IDFCIDKEY1KEY2KEY3KEY4
1F1VALUE11VALUE12VALUE13None
2F2VALUE21VALUE22VALUE23VALUE24

方案优势

  • 时间复杂度为O(N),N为所有属性的总条数,仅需单次遍历即可完成预处理,性能远高于先展开再透视的方案
  • 不需要提前知晓所有属性的key列表,自动适配不同条目包含不同属性的场景
  • 逻辑简洁可读性强,后续维护调整成本极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:36:02