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

如何将内含列表的字典转换为目标格式pandas DataFrame

问题背景

读取API接口返回的字典结构响应,需转换为单行pandas DataFrame,其中字典内的列表类型字段需整体作为单元格值存储。
使用如下代码转换时触发报错,提示值长度与索引长度不匹配:

data=pd.DataFrame(result,index=[0])

响应示例数据:

result = {'instance_id': -1, 'segment_id': 9000001395, 'list 1': [0.0, 100.0, 0.0], 'list 2': [0.0, 0.0, 100.0, 0.0, 0.0], 'v85': 11.5}

预期输出的DataFrame列顺序为instance_id、segment_id、list 1、list 2、v85,单行取值与字典键值一一对应,列表字段直接存储原始列表。

报错原因

pandas默认会将传入字典的每个值按可迭代对象展开对齐索引,列表类型的值长度大于1,和指定的长度为1的索引无法对齐,因此触发报错。

解决代码

将原始字典包裹在列表中传入DataFrame构造函数即可,pandas会自动将列表内的每个字典识别为单行记录,列表类型值会整体作为单元格内容存储:

import pandas as pd

result = {'instance_id': -1, 'segment_id': 9000001395, 'list 1': [0.0, 100.0, 0.0], 'list 2': [0.0, 0.0, 100.0, 0.0, 0.0], 'v85': 11.5}

# 核心转换逻辑
df = pd.DataFrame([result])

# 固定列顺序(按需使用)
df = df[['instance_id', 'segment_id', 'list 1', 'list 2', 'v85']]
输出效果

转换后得到1行5列的DataFrame,各列取值完全符合预期:

  • instance_id:-1
  • segment_id:9000001395
  • list 1:[0.0, 100.0, 0.0]
  • list 2:[0.0, 0.0, 100.0, 0.0, 0.0]
  • v85:11.5

如果后续需要处理批量返回的多条同结构数据,只需将所有字典存入同一个列表传入pd.DataFrame()即可,无需修改转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:01:48