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

如何将嵌套字典列表转换为展开式Pandas DataFrame?

解决嵌套字典列表转扁平化DataFrame的问题

这是处理嵌套字典转DataFrame时很典型的场景,直接调用pd.DataFrame(data)会把嵌套的b字段当成单个列存储。这里给你两种简单有效的解决办法:

方法1:使用pd.json_normalize()(推荐)

pd.json_normalize()是pandas专门为半结构化数据(比如嵌套字典、JSON)设计的工具,能自动将嵌套层级展开为独立列:

import pandas as pd

data = [{'a': 1, 'b': {'c': 1, 'd': 2, 'e': 3}, 'f': 4}, 
        {'a': 2, 'b': {'c': 2, 'd': 3, 'e': 4}, 'f': 3}, 
        {'a': 3, 'b': {'c': 3, 'd': 4, 'e': 5}, 'f': 2}, 
        {'a': 4, 'b': {'c': 4, 'd': 5, 'e': 6}, 'f': 1 }]

# 自动展开嵌套字典
df = pd.json_normalize(data)
# 移除列名中的'b.'前缀(如果需要的话)
df.columns = df.columns.str.replace('b.', '', regex=False)

print(df)

运行后会直接得到你想要的结构:

a  c  d  e  f
0  1  1  2  3  4
1  2  2  3  4  3
2  3  3  4  5  2
3  4  4  5  6  1

方法2:手动遍历展开字典

如果需要更灵活的控制(比如嵌套结构更复杂时),可以手动遍历每个字典,将嵌套的b字段合并到外层:

import pandas as pd

data = [{'a': 1, 'b': {'c': 1, 'd': 2, 'e': 3}, 'f': 4}, 
        {'a': 2, 'b': {'c': 2, 'd': 3, 'e': 4}, 'f': 3}, 
        {'a': 3, 'b': {'c': 3, 'd': 4, 'e': 5}, 'f': 2}, 
        {'a': 4, 'b': {'c': 4, 'd': 5, 'e': 6}, 'f': 1 }]

flattened_data = []
for item in data:
    # 复制原字典,避免修改原始数据
    flat_item = item.copy()
    # 取出嵌套的b字典,并合并到外层,同时删除原b字段
    flat_item.update(flat_item.pop('b'))
    flattened_data.append(flat_item)

# 转换为DataFrame
df = pd.DataFrame(flattened_data)
print(df)

这个方法通过pop()取出嵌套字典,再用update()合并到外层,最终得到的DataFrame结构和需求完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:50:24