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

如何高效将值为列表的字典列表转换为标准Pandas DataFrame?

解决方法:将列表型字典列表转为标准DataFrame

嘿,这个场景我之前处理过!你遇到的问题是因为直接用pd.DataFrame(list_df)时,pandas把每个字典当成了单独的一行,而字典里的列表就成了单元格里的整体值。下面给你两种最有效的处理方式,优先推荐第一种:

方法1:直接从原始数据构造标准DataFrame(最高效)

其实你的原始数据结构本身就很适合直接生成正确的DataFrame——每个字典里的Name、High、Low都是对应列的完整数据列表。我们只需要把每个字典单独转为小DataFrame,再合并起来就行:

import pandas as pd

list_df = [
    {'High':[2,3,4,5,5,3,3,4,5,5],'Low':[0,-3,1,4,1,2,2,3,1,-1],'Name':['A','A','A','A','A','A','A','A','A','A']},
    {'High':[35,23,424,5,25,3,223,4,5,255],'Low':[3,3,44,5,2,3,22,2,1,25],'Name':['B','B','B','B','B','B','B','B','B','B']}
]

# 核心代码
df = pd.concat([pd.DataFrame(item) for item in list_df], ignore_index=True)

这种方式跳过了生成“单元格为列表”的中间DataFrame,直接一步到位,效率是最高的,而且逻辑清晰。

方法2:补救已生成的列表型单元格DataFrame

如果你已经执行了df = pd.DataFrame(list_df)得到了每行都是列表的DataFrame,也可以用explode()方法快速展开所有列:

# 假设已经有了这个结构的df
df = pd.DataFrame(list_df)
# 展开所有包含列表的列
df = df.explode(['High', 'Low', 'Name'], ignore_index=True)

explode()会把每个单元格里的列表拆分成单独的行,同时保持各列元素的对应关系,ignore_index=True用来重置索引,避免出现重复的索引值。

小补充

为什么直接pd.DataFrame(list_df)会生成奇怪的结构?因为list_df是包含2个字典的列表,pandas默认把每个字典视为一行数据,字典的键是列名,而字典的值(列表)就被当作该单元格的单个值,所以最终得到的是2行3列的DataFrame,每个单元格都是长度为10的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:37:59