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

如何将非均匀嵌套字典转为表格?解决Pandas ValueError报错

嵌套字典转指定列表格:报错解决与实现方案

报错原因

你写的代码直接将单个标量值的字典传入pd.DataFrame(),pandas要求如果所有值都是标量,必须指定索引,所以抛出ValueError: If using all scalar values, you must pass an index。而且原代码循环拆分了res的两个子字典,根本没法生成包含所有指定列的表格。

实现步骤与代码

要完成需求,得先把嵌套的字典扁平化,把深层的字段(比如Load.Stat.Code、Load.Stat.Reason)提取到顶层,再按指定列生成DataFrame:

import pandas as pd

res = {'Head': {'Ide': 'GLE', 'ID': '7b', 'Source': 'CARS', 'Target': 'TULUM', 'Country': 'GL'},
        'Load': {'Stat': {'Code': '21', 'Reason': 'invalid'}, 'SrcFilePath': '/path.xls'}}

# 扁平化嵌套字典,整合所有需要的字段
flat_data = {}
# 导入Head层的全部字段
flat_data.update(res['Head'])
# 导入Load.Stat下的字段
flat_data.update(res['Load']['Stat'])
# 导入Load层的SrcFilePath字段
flat_data['SrcFilePath'] = res['Load']['SrcFilePath']

# 指定目标列顺序
target_columns = ['Ide', 'ID', 'Source', 'Target', 'Country', 'Code', 'Reason', 'SrcFilePath']

# 生成DataFrame:用列表包裹字典,避免标量值报错,同时指定列顺序
df = pd.DataFrame([flat_data], columns=target_columns)
print(df)

运行结果

执行后会输出符合要求的表格:

Ide  ID Source Target Country Code    Reason  SrcFilePath
0  GLE  7b   CARS  TULUM      GL   21  invalid  /path.xls

关键说明

  • 用update()方法可以快速合并字典的键值对,省去逐个赋值的麻烦
  • 把字典放进列表[flat_data],pandas会自动识别为一行数据,无需手动指定索引,完美解决原报错
  • 通过columns参数指定列顺序,确保输出和要求的列完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:00:29