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
相关产品推荐
相关产品推荐

