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

Python:将嵌套字典对象转换为pandas DataFrame报错问题求解

错误原因
  • 入参类型错误:你通过f_r.read()读取到的d是字符串类型,pd.DataFrame.from_dict要求输入参数为字典/类字典可迭代结构,直接传入字符串会触发你遇到的ValueError报错。
  • 数据结构适配问题:就算你将字符串转为字典,原嵌套字典的每个值是被列表包裹的元组,直接转换后的值会带多余的列表外层,不符合你预期的输出格式。
解决方法

你需要先把读取到的字符串转为Python字典,再做DataFrame转换,由于你的字典是Python字面量格式不是标准JSON,用ast.literal_eval解析是最安全的方案,完整可运行代码如下:

import pandas as pd
import os
import ast

# 读取文件内容
with open(os.path.join(dir_path,f_ind),'r',encoding='utf-8') as f_r:
    d_str = f_r.read()

# 把字符串转成Python字典
d = ast.literal_eval(d_str)

# 转换为DataFrame,此时indent号为行索引
df = pd.DataFrame(d)

# 重置索引转为普通列,并重命名为IndentNo
df = df.reset_index(names='IndentNo')

# 匹配你需要的列名
df = df.rename(columns={'indent_detail_insert':'indent_details_insert'})

# 去掉值外层的列表包裹,取出里面的元组
df['indent_insert'] = df['indent_insert'].str[0]
df['indent_details_insert'] = df['indent_details_insert'].str[0]

运行以上代码就能得到你要求格式的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:02