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

如何将给定嵌套字典转换为指定格式的Pandas DataFrame?

嵌套字典转指定结构DataFrame解决方案

你的原代码无法得到目标输出,核心原因是字典为多层嵌套结构,直接使用pd.DataFrame.from_dict只能解析顶层层级,无法深入提取日期和列值维度的数据。以下是可行的处理方案:

处理代码

import pandas as pd

dct = { "a" : 
              { "b" : 
                    [{ "2022-03-31" : { "c":"20"} },
                     { "2021-03-31" : { "c" : "30" } } ]  },
        "e" : { "b" : 
                    [{ "2022-03-31" : { "d":"300"} },
                     { "2021-03-31" : { "d" : "29" } } ] } ,
        "h" : 
              { "b" : 
                    [ {"2022-03-31" : { "f":"190"} },
                     { "2021-03-31" : { "f" : "98" } } ] } }

# 收集日期与对应列值的映射关系
data = {}
for key in dct:
    date_entries = dct[key]['b']
    for entry in date_entries:
        # 提取单键字典中的日期、列名和值
        date = next(iter(entry.keys()))
        col, val = next(iter(entry[date].items()))
        # 填充数据字典
        if date not in data:
            data[date] = {}
        data[date][col] = val

# 转换为DataFrame并调整格式
df = pd.DataFrame.from_dict(data, orient='index').reset_index().rename(columns={'index': 'date'})
# 按预期输出调整列顺序
df = df[['date', 'c', 'd', 'f']]
# 将字符串类型的数值转为整数(可选操作)
df[['c', 'd', 'f']] = df[['c', 'd', 'f']].astype(int)

print(df)

输出结果

date   c    d    f
0  2022-03-31  20  300  190
1  2021-03-31  30   29   98

注:若你预期输出中2022-03-31的d值为30,可能是原字典数据存在笔误,上述代码严格基于你提供的原始字典处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:55:22