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

Python中如何最高效地将Dataframe转换为指定结构dictionary

Python 最高效DataFrame转字典实现方案

性能最优的实现方式是直接调用pandas原生内置的DataFrame.to_dict()方法,该方法底层由C实现,不需要在Python层写循环遍历,性能远高于手写iterrows()/itertuples()遍历拼接的方案,数据量越大性能优势越明显。

你只需要传入不同的orient参数,就能直接得到两种最常用的目标字典结构:

  • 第一种结构:外层键为列名,内层键为行索引,值为对应单元格内容
    直接使用默认参数即可,代码示例:

    import pandas as pd
    
    # 示例测试DataFrame
    df = pd.DataFrame(
        {"语文": [92, 88, 95], "数学": [87, 96, 90]},
        index=["张三", "李四", "王五"]
    )
    
    # 转换为列优先字典
    col_priority_dict = df.to_dict(orient="dict")
    

    输出结构如下:

    {
        "语文": {"张三": 92, "李四": 88, "王五": 95},
        "数学": {"张三": 87, "李四": 96, "王五": 90}
    }
    
  • 第二种结构:外层键为行索引,内层键为列名,值为对应单元格内容
    传入orient="index"参数即可,代码示例:

    # 转换为行优先字典
    row_priority_dict = df.to_dict(orient="index")
    

    输出结构如下:

    {
        "张三": {"语文": 92, "数学": 87},
        "李四": {"语文": 88, "数学": 96},
        "王五": {"语文": 95, "数学": 90}
    }
    

性能注意事项

  • 不要在Python层手写循环拼接字典:iterrows()本身存在类型推断开销,万行以上数据场景下,性能比内置to_dict()低10~100倍。
  • 如果需要自定义键名、值格式,优先用pandas向量化方法先修改DataFrame的列名、索引、值,再调用to_dict(),不要在循环内做值转换。
  • 如果目标是列表套行字典的结构(每行对应一个键为列名的字典,存入列表),可以传入orient="records"直接生成,同样是最高效的实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:03:27