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

如何将defaultdict(list)列表高效转换为pandas DataFrame

高效转换defaultdict为pandas DataFrame方案

性能瓶颈说明

  • 原有代码在循环中逐次创建小型DataFrame,对象实例化开销随数据集规模增长快速上升
  • 多次调用pd.concat拼接大量小DataFrame,内存拷贝、索引对齐的开销会呈非线性增长,是性能差的核心原因

优化实现

无重复列名场景

如果所有data['2subset']下的defaultdict键名无重复,直接合并为总字典后一次性转换即可:

merged_dict = {}
for sub_dict in data["2subset"]:
    merged_dict.update(sub_dict)
result = pd.DataFrame(merged_dict)

存在重复列名场景

如果有重复键名,可添加自动重命名逻辑避免列覆盖,效果和原有concat逻辑对齐:

merged_dict = {}
key_counter = {}
for sub_dict in data["2subset"]:
    for key, val in sub_dict.items():
        # 重复列名添加序号后缀,如需和原concat后缀格式对齐可改为f"{key}.{key_counter[key]}"
        if key in key_counter:
            key_counter[key] += 1
            processed_key = f"{key}_{key_counter[key]}"
        else:
            key_counter[key] = 0
            processed_key = key
        merged_dict[processed_key] = val
result = pd.DataFrame(merged_dict)

性能收益

该方案仅需遍历一次数据集、仅创建一次DataFrame,处理万级以上的defaultdict时,性能可提升百倍以上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:06:04