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

如何将值为odict_items的字典转换为指定格式的pandas DataFrame

问题场景

现有字典所有值均为odict_items类型,结构示例:

{1: odict_items([('a', 0.0952), ('b', 14.583351), ('c', 120000), ('d', 6000)]),
 2: odict_items([('a', 0.098733336), ('b', 14.526156), ('c', 120000), ('d', 6000)])}

直接执行df = pd.DataFrame(dict.values())转换时,会得到每列存储键值元组的错误结果:

0            1             2          3
0   (a, 0.0952) (b, 14.583351)  (c, 120000) (d, 6000)
1   (a, 0.0987) (b, 14.526156)  (c, 120000) (c, 6000)

目标输出要求:原字典的键作为行索引,odict_items中的键作为列名,对应数值作为单元格值,格式如下:

a        b          c       d
1   0.0952  14.583351   120000  6000
2   0.0987  14.526156   120000  6000
可行方案

核心处理逻辑是先将每个odict_items对象转为普通字典,让pandas可以正确识别键值对应关系,两种常用写法:

  • 写法1:使用from_dict指定索引方向,语义更清晰
# 假设原字典变量名为raw_dict
df = pd.DataFrame.from_dict(
    {idx: dict(item_pairs) for idx, item_pairs in raw_dict.items()},
    orient='index'
)
  • 写法2:构造后转置,代码更简洁
df = pd.DataFrame({idx: dict(item_pairs) for idx, item_pairs in raw_dict.items()}).T
错误原因

直接传入dict.values()时,pandas会将每个odict_items视为一个普通可迭代对象,把其中的每个(键, 值)元组当做单个单元格值存入列,无法自动解析元组内的列名和数值对应关系,因此得到不符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:01:08