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

如何将包含可迭代对象的字典转换为指定格式的DataFrame

解决字典转DataFrame时保留列表为单个单元格的问题

这个问题我之前也碰到过,其实就是pandas对字典转DataFrame的默认逻辑在搞鬼——当你用pd.DataFrame.from_dict()时,如果某个值是列表这类可迭代对象,pandas会自动把标量值(比如你的2、3)广播成和列表长度一致的序列,然后把列表的每个元素拆成单独的行,所以才会得到3行的结果。

要实现你期望的“列表作为单个单元格”的效果,有几种简单的方法:

方法1:直接用DataFrame构造函数传入字典列表

这是最直观的方式,把你的字典放到一个列表里传给pd.DataFrame(),这样pandas会把整个字典当成一行数据,不管值是标量还是列表,都会保留为单个单元格:

import pandas as pd

d = dict()
d['a'] = 2
d['b'] = 3
d['c'] = [1,5,7]

df = pd.DataFrame([d])
print(df)

输出结果就是你想要的:

a  b          c
0  2  3  [1, 5, 7]

方法2:修改字典,把所有值包装成单元素列表

如果你还是想用from_dict()方法,可以把每个值都改成长度为1的列表(列表里的元素就是原来的值,列表本身作为单元格内容):

import pandas as pd

d = dict()
d['a'] = [2]
d['b'] = [3]
d['c'] = [[1,5,7]]

df = pd.DataFrame.from_dict(d)
print(df)

这样输出的结果同样符合预期,每个单元格都是你想要的内容。

方法3:用orient='index'参数转置

通过指定orient='index'让pandas先把字典的键作为行索引,值作为列值,然后再转置成你需要的列结构,这样列表会被保留为单个单元格:

import pandas as pd

d = dict()
d['a'] = 2
d['b'] = 3
d['c'] = [1,5,7]

df = pd.DataFrame.from_dict(d, orient='index').T
print(df)

运行后也能得到你期望的DataFrame结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:08:04