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

如何从值为列表的字典列表生成逐行展开的Pandas DataFrame

解决方法

你可以通过以下两种常用方式实现需求:

方法1:先构造初始DataFrame再展开列表列

先用你原来的方法得到每个单元格为列表的DataFrame,再用explode方法逐行展开所有列的列表元素:

import pandas as pd

data_list = [
{'Width':[20,25,30,40],'Length':[21,22,23,24],'Ratio':[1.05,0.88,0.767,0.6]},
{'Width':[10,15,24,35],'Length':[20,25,30,40],'Ratio':[2,1.67,1.25,1.14]}
]

# 先得到初始的列表列DataFrame
df = pd.DataFrame(data_list)
# 对所有列执行展开操作
df = df.explode(df.columns.tolist(), ignore_index=True)
print(df)

如果你的pandas版本较低不支持多列同时explode,可以用apply方法实现等效效果:

df = df.apply(pd.Series.explode, ignore_index=True)

方法2:逐字典转换后拼接

由于每个字典内的所有列表长度一致,可以先把单个字典转为对应行数的DataFrame,再把所有字典生成的DataFrame拼接起来:

import pandas as pd

data_list = [
{'Width':[20,25,30,40],'Length':[21,22,23,24],'Ratio':[1.05,0.88,0.767,0.6]},
{'Width':[10,15,24,35],'Length':[20,25,30,40],'Ratio':[2,1.67,1.25,1.14]}
]

df = pd.concat([pd.DataFrame(item) for item in data_list], ignore_index=True)
print(df)

两种方法输出的结果都符合你要求的展开结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:36:00