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

如何提升大型字典转换为DataFrame的效率?

优化方案

1. 替换eval为高效安全的JSON解析

eval速度慢且存在安全风险,将字符串转为标准JSON格式后用json.loads解析,效率提升明显:

import json

my_dict = {}
for col in my_data:
    # 替换单引号为双引号,适配JSON规范
    json_str = my_data[col].replace("'", "\"")
    my_dict[col] = json.loads(json_str)
df = pd.DataFrame(my_dict, index=index)

2. 批量解析+一次性构造DataFrame

用字典推导式批量解析所有数据,避免循环内的重复操作,再一次性生成DataFrame,减少中间对象开销:

import json

# 批量解析所有列的字符串数据
parsed_data = {col: json.loads(my_data[col].replace("'", "\"")) for col in my_data}
# 直接构造DataFrame
df = pd.DataFrame(parsed_data, index=index)

3. 提前补全索引,避免自动对齐开销

手动补全每个字典的索引键,直接生成对应索引的数值列表,跳过pandas自动索引对齐的计算步骤:

import json
from collections import defaultdict

parsed_data = {}
for col in my_data:
    d = json.loads(my_data[col].replace("'", "\""))
    # 用defaultdict自动填充NaN
    full_dict = defaultdict(lambda: float('nan'))
    full_dict.update(d)
    # 按index顺序生成值列表
    parsed_data[col] = [full_dict[k] for k in index]
df = pd.DataFrame(parsed_data, index=index)

4. 使用from_dict指定构造方向

利用pd.DataFrame.from_dict的orient参数,直接传入解析后的字典,构造效率略高于普通构造器:

import json

parsed_data = {col: json.loads(my_data[col].replace("'", "\"")) for col in my_data}
df = pd.DataFrame.from_dict(parsed_data, orient='columns', index=index)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:55:35