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

如何用纯Python基于含重复值的DataFrame列生成嵌套字典?

将4列DataFrame转换为三级嵌套字典的纯Python实现

需求说明

我有一个形状为7739×4的DataFrame,需要将其转换为如下结构的嵌套字典:

values = {
    'Khulna':{
        'Bagerhat':{
            'BagerhatSadar': ['WardNo01','WardNo02','WardNo03','WardNo04','WardNo05','WardNo06','WardNo07','WardNo08','WardNo09'],
            'Mongla': ['WardNo02']
        }
    }
}

纯Python实现方案

假设DataFrame的四列依次对应一级键(如Khulna)、二级键(如Bagerhat)、三级键(如BagerhatSadar)、列表元素(如WardNo01),可以通过遍历DataFrame的每一行,逐步构建嵌套字典:

代码实现

# 假设你的DataFrame名为df,列名依次对应层级键和列表元素
values = {}

for _, row in df.iterrows():
    level1 = row[0]
    level2 = row[1]
    level3 = row[2]
    ward = row[3]
    
    # 逐层初始化嵌套结构
    if level1 not in values:
        values[level1] = {}
    if level2 not in values[level1]:
        values[level1][level2] = {}
    if level3 not in values[level1][level2]:
        values[level1][level2][level3] = []
    
    # 添加元素到对应列表(数据无重复可省略去重判断)
    if ward not in values[level1][level2][level3]:
        values[level1][level2][level3].append(ward)

关键说明

  • 遍历DataFrame的每一行,依次提取四级数据字段;
  • 逐层检查字典键是否存在,不存在则初始化对应的空字典或空列表;
  • 若DataFrame有明确列名,可将row[0]这类索引取值替换为列名取值,比如row['Division']、row['District'];
  • 如果原始数据中不存在重复的 ward 条目,可以删除去重判断,提升遍历效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:35:23