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

如何用Pandas扁平化含动态根键的嵌套字典?

Pandas 扁平化动态根键嵌套字典的高效方法

针对根键为动态产品编码的嵌套字典(如example_2),以下两种方法无需修改原字典结构,即可高效实现完全扁平化:

方法一:结合字典推导式与pd.json_normalize

利用字典推导式临时为每个子字典添加产品编码字段,直接传入json_normalize自动展开嵌套结构:

import pandas as pd

example_2 = {
    'AP001': {
        'description': 'Product 1',
        'dimensions': {
            'height': 20,
            'width': 30
        }        
    },
    'AP002': {
        'description': 'Product 2',
        'dimensions': {
            'height': 15,
            'width': 25
        }        
    }
}

# 生成带产品编码的字典列表,传入json_normalize完成扁平化
df = pd.json_normalize([{'p_code': code, **details} for code, details in example_2.items()])
print(df)

输出结果会自动将dimensions下的height和width展开为独立列,同时保留产品编码p_code。

方法二:分步处理DataFrame与嵌套列

先通过from_dict生成初始DataFrame,再单独展开嵌套的dimensions列并合并:

import pandas as pd

example_2 = {
    'AP001': {
        'description': 'Product 1',
        'dimensions': {
            'height': 20,
            'width': 30
        }        
    },
    'AP002': {
        'description': 'Product 2',
        'dimensions': {
            'height': 15,
            'width': 25
        }        
    }
}

# 初始生成DataFrame,将索引转为产品编码列
df = pd.DataFrame.from_dict(example_2, orient='index').reset_index(names='p_code')
# 展开dimensions嵌套字段
dimensions_df = pd.json_normalize(df['dimensions'])
# 合并数据并移除原嵌套列
final_df = pd.concat([df.drop('dimensions', axis=1), dimensions_df], axis=1)
print(final_df)

这种方式适合需要对嵌套字段做额外清洗或转换的场景,灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:10:46