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

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

问题描述

我想将如下结构的字典转换为Pandas DataFrame:

{'123': [ {'feature_1':'a1','feature_2':'b1',...},{'feature_1':'a2','feature_2':'b2',...},...,{'feature_1':'an','feature_2':'bn'} ],... }

我当前的尝试代码如下:

df = pd.DataFrame.from_dict({(key, lis_index, sub_key): data[key][lis_index][sub_key] for key in data.keys() for lis_index in range(len(data[key])) for sub_key in data[key][lis_index].keys()}, orient='index')

其中data为目标字典,但转换后得到两列:一列是三元组索引,另一列是值列。我需要转换为如下格式的DataFrame:

keyfeature_1feature_2...feature_n
123a1b1...z1
123a2b2...z2
...............
123anbn...zn
解决方案

不需要用这么复杂的字典推导式,更简洁高效的做法是遍历字典的键值对,将每个列表内的字典转为DataFrame并添加key列,最后合并所有结果:

import pandas as pd

dfs = []
for key, items in data.items():
    # 将当前key对应的字典列表转为DataFrame
    temp_df = pd.DataFrame(items)
    # 添加key列,值为当前字典的键
    temp_df['key'] = key
    dfs.append(temp_df)

# 合并所有临时DataFrame并重置索引
final_df = pd.concat(dfs, ignore_index=True)
# 调整列顺序,把key列移到最前面
final_df = final_df[['key'] + [col for col in final_df.columns if col != 'key']]

代码说明

  1. 遍历字典的每个键(如'123')及其对应的字典列表;
  2. 直接将列表转为DataFrame,自动生成feature_1、feature_2等列;
  3. 为临时DataFrame新增key列,统一填充当前遍历的字典键;
  4. 收集所有临时DataFrame后,用pd.concat合并为一个完整的DataFrame;
  5. 调整列顺序,让key列处于最前方,匹配需求格式。

这种方法逻辑直观,代码易读,不会生成多余的索引列,运行效率也更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:55:18