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

如何将字典键作为新列 从嵌套字典创建Pandas DataFrame

嵌套字典转指定结构Pandas DataFrame实现

需求说明

需要将特定结构的嵌套字典转换为Pandas DataFrame,字段映射规则:

  • 字典外层键作为FRUIT列取值
  • 内层列表中每个字典的price字段对应PRICE列、store字段对应STORE列

示例输入字典

fruit_dict = {
    "apple":[
        {"price":19, "store":"xyz"},
        {"price":13, "store":"abc"}
    ],
    "pear":[
        {"price":25, "store":"xyz"}
    ]
}

期望输出结构

FRUIT  PRICE STORE
0 apple     19   xyz
1 apple     13   abc
2  pear     25   xyz

此前通过循环逐行给FRUIT列赋值、再配合pd.json_normalize提取内层字段的实现流程繁琐,需要更简便高效的扁平化方案。

简便实现方案

不需要编写复杂的逐行赋值逻辑,以下两种方案都可以快速得到目标结果:

方案1:Pandas原生方法链式实现

利用Pandas自带的字典读取、行展开、字段拆分方法,核心代码仅3行:

import pandas as pd

# 读取字典为索引为水果名的结构,展开内层列表为多行
df = pd.DataFrame.from_dict(fruit_dict, orient="index", columns=["tmp"]).explode("tmp").reset_index()
# 拆分内层字典字段,合并水果名列
df = pd.concat([df["index"].rename("FRUIT"), pd.json_normalize(df["tmp"])], axis=1)
# 统一列名
df.columns = ["FRUIT", "PRICE", "STORE"]

方案2:列表推导预扁平化实现

先通过轻量循环把嵌套字典拍平为一维字典列表,再直接构造DataFrame,大数据量下性能更优:

import pandas as pd

flat_data = [
    {"FRUIT": fruit, "PRICE": item["price"], "STORE": item["store"]}
    for fruit, items in fruit_dict.items()
    for item in items
]
df = pd.DataFrame(flat_data)

两种方案输出完全匹配预期结构,可根据个人代码习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:27:25