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

Pandas读取长度为1的嵌套OrderedDict生成DataFrame结构异常如何解决

嵌套OrderedDict转pandas DataFrame解决方案

问题原因

pandas处理单个一维映射结构(比如单条OrderedDict)时,会默认将值中的可迭代对象拆分为多行。你提供的数据中field2是长度为2的OrderedDict,pandas会将其识别为行维度的数据源,最终生成2行结果,还会把内层OrderedDict的key当成外层索引,因此出现索引异常、记录重复的问题,指定columns参数仅会调整列选择,不会修正行拆分的逻辑,所以没有效果。

解决方法

方法1(推荐,兼容单/多条记录)

将所有待加载的OrderedDict放入列表中,再传入DataFrame构造函数即可。pandas会自动将列表中的每一个OrderedDict识别为单独的一行数据,嵌套结构会作为完整值存入对应列,完全符合预期输出。
示例代码:

from collections import OrderedDict
import pandas as pd

# 原始数据
dataODict = OrderedDict(
    [
        ('id', '*****'), 
        ('field1', '*****'), 
        ('field2', OrderedDict(
            [
                ('id', '*****'),
                ('field1', '*****')
            ]
        )),
        ('field3', '*****'),
        ('field4', '*****'),
        ('field5', '*****')
    ]
)

# 单条记录加载
df = pd.DataFrame([dataODict])

# 多条记录加载示例
# df = pd.DataFrame([dataODict1, dataODict2, dataODict3])

运行后输出的df结构完全匹配要求的格式,field2列会直接存储整个嵌套OrderedDict对象。

方法2(仅适用于单条记录)

也可以先将OrderedDict转为Series,再转置为DataFrame,效果一致:

df = pd.DataFrame(pd.Series(dataODict)).T

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:07