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

如何从Pandas DataFrame构建指定结构的嵌套字典

Pandas DataFrame 生成指定层级嵌套字典实现方法

你可以直接通过逐行遍历+字典组装的方式实现,逻辑直观易维护,对绝大多数规模的数据集都有足够好的性能。


方法1:基础逐行组装(可读性最高)

直接遍历DataFrame每一行,按照你要求的层级结构拼接字典即可:

# 假设你的DataFrame变量名为df
nested_dict = {}
for _, row in df.iterrows():
    nested_dict[row["Name"]] = {
        "Bio": {
            "Education": row["Education"],
            "DOB": row["DOB"],
            "Job": row["Job"]
        },
        "Questions": {
            "Q1": row["Q1"],
            "Q2": row["Q2"],
            "Q3": row["Q3"]
        }
    }

方法2:列分组写法(适合字段多的场景)

如果Bio、Questions分组下的字段较多,不想重复写键值对,可以借助Pandas自带的to_dict()方法减少重复代码:

# 提前按分组定义列名列表,后续调整字段只需要改这两个列表即可
bio_columns = ["Education", "DOB", "Job"]
question_columns = ["Q1", "Q2", "Q3"]

nested_dict = {
    user_name: {
        "Bio": user_row[bio_columns].to_dict(),
        "Questions": user_row[question_columns].to_dict()
    }
    for user_name, user_row in df.set_index("Name").iterrows()
}

注意事项

  • 如果Name列存在重复值,以上两种写法都会默认保留最后一次出现的同名用户数据,如果需要保留所有同名条目,可以将外层字典的值改为列表结构存储,或者提前对DataFrame的Name列做去重处理。
  • 如果字典后续需要做JSON序列化,遇到日期、空值这类Pandas特殊类型时,可以在取值时提前做类型转换,比如用str(row["DOB"])把日期转成字符串格式。

内容的提问来源于stack exchange,提问作者Abdul Aleem Asim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:09:26