如何从字典列表构建指定结构的pandas DataFrame
实现方案
你不需要逐字典调用pd.DataFrame.from_dict()后再拼接,直接用pandas原生的列表入参构造方式即可,代码更简洁,执行效率也更高。
核心代码
import pandas as pd from typing import List, Dict from decimal import Decimal # 输入示例 input_data: List[Dict[Decimal, Decimal]] = [ {0: 0.05, 0.5: 0.15, 1: 0.1}, {0: 0.06, 0.5: 0.14, 1: 0.2}, {0: 0.09, 0.5: 0.25, 1: 0.17} ] # 一步构造并调整为目标结构 df = pd.DataFrame(input_data).T df.columns = [f"Dict {i+1}" for i in range(len(input_data))] df.index.name = "Index"
运行后输出的结果完全匹配预期格式:
Dict 1 Dict 2 Dict 3 Index 0.0 0.05 0.06 0.09 0.5 0.15 0.14 0.25 1.0 0.10 0.20 0.17
方案优势
- 代码量更少:无需编写循环,无需多次创建DataFrame对象、调用
pd.concat做拼接,核心逻辑仅3行 - 执行效率更高:pandas内部对列表类入参做了向量化优化,避免了循环生成小对象、多次内存拷贝的额外开销,当n、m数值较大时,性能优势会非常明显
适配说明
- 该方案完全适配你提到的所有字典键固定一致的场景
- 如果存在个别字典缺键的情况,pandas会自动将缺失位置填充为
NaN,可按需追加fillna逻辑处理 - 如果需要统一数值类型为浮点型,构造时传入
dtype=float参数即可:pd.DataFrame(input_data, dtype=float).T
内容的提问来源于stack exchange,提问作者Asier Garcia Ruiz
相关产品推荐
相关产品推荐

