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

Python嵌套字典列表转换为规整Pandas DataFrame的问题求助

解决字典转规整Pandas DataFrame的问题

嗨,我来帮你搞定这个转换问题!你的字典结构里每个日期键对应单个字典组成的列表,直接转DataFrame会因为嵌套列表导致格式混乱,咱们可以用两种简单的方式处理:

方法一:遍历展开(直观易懂)

先把嵌套的字典从列表里提取出来,再组合成统一的字典列表,最后转成DataFrame:

import pandas as pd

# 你的原始数据字典
raw_data = {
    '2019-05-21': [{'averageReturn': 0.04691915290638171, 'returnAmount': 10469.191529063817, 'terminationDate': '2019-05-21'}],
    '2020-01-15': [{'averageReturn': 0.029923082622105746, 'returnAmount': 10500.0, 'terminationDate': '2020-01-15'}]
}

# 处理嵌套结构,提取每个列表里的字典
processed_list = []
for _, dict_list in raw_data.items():
    # 每个列表只有一个字典,直接取索引0的元素
    processed_list.append(dict_list[0])

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

运行后会得到规整的结果:

averageReturn  returnAmount terminationDate
0       0.046919  10469.191529      2019-05-21
1       0.029923  10500.000000      2020-01-15

方法二:列表推导式(简洁高效)

如果喜欢更紧凑的代码,用列表推导式一步到位:

import pandas as pd

raw_data = {
    '2019-05-21': [{'averageReturn': 0.04691915290638171, 'returnAmount': 10469.191529063817, 'terminationDate': '2019-05-21'}],
    '2020-01-15': [{'averageReturn': 0.029923082622105746, 'returnAmount': 10500.0, 'terminationDate': '2020-01-15'}]
}

# 直接提取每个列表中的字典并转换
df = pd.DataFrame([item[0] for item in raw_data.values()])

额外需求:保留原始日期键作为列

如果想把原始的日期键也作为单独的列(比如和terminationDate区分开),可以稍作修改:

processed_list = []
for entry_date, dict_list in raw_data.items():
    item_dict = dict_list[0]
    # 添加新列存储原始日期键
    item_dict['entry_date'] = entry_date
    processed_list.append(item_dict)

df = pd.DataFrame(processed_list)

这样生成的DataFrame会多一列entry_date,和terminationDate对应的值一致,适合后续需要区分不同日期维度的场景。


内容的提问来源于stack exchange,提问作者a.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:04:42