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

如何更高效地将嵌套字典转换为目标格式pandas DataFrame

高效实现方案

你原有写法的效率瓶颈来自三点:

  • 对同一个字典做了5次独立遍历,分别生成5个列的列表,存在大量重复的Python层循环开销
  • 逐元素调用datetime.datetime.strptime做日期转换,批量场景下性能远差于pandas内置的向量化日期转换方法
  • 先生成Date列再调用set_index,存在不必要的内存拷贝

优化后代码

直接利用pandas对嵌套字典的原生构造支持,全程走底层向量化逻辑,没有多余循环:

import pandas as pd

data = {}
for index, row in get_data_row_by_row():
    data[index] = row

# 嵌套字典直接按行构造,外层key自动作为行索引,内层key自动作为列名
df = pd.DataFrame.from_dict(data, orient='index')
# 批量转换索引为日期类型,无需单独生成Date列再重置索引
df.index = pd.to_datetime(df.index, format="%Y-%m-%d")
# 如需严格匹配原有列顺序,加上这行即可
df = df[['Open', 'Close', 'Low', 'High']]

性能优势

  • 省去了Python层的多次循环遍历,DataFrame构造逻辑走pandas底层C实现,数据量越大性能差距越明显,十万级数据量下速度可以提升10~100倍
  • 用pd.to_datetime做批量日期类型转换,比逐元素调用标准库日期解析方法效率高一个量级
  • 直接修改索引类型,省去了set_index带来的额外数据拷贝,内存占用更低
  • 最终生成的DataFrame和你原有逻辑的结果完全一致:索引为DatetimeIndex类型,列名、数值、顺序完全匹配

内容的提问来源于stack exchange,提问作者alex-uarent-alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:12:41