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

如何快速将多个DataFrame合并为pandas多级索引DataFrame?

多级索引DataFrame构建性能优化方案

原代码性能低下的核心原因是循环内反复调用pd.concat和append,每次操作都会复制已生成的全量DataFrame,数据量越大效率越低。以下是高兼容的高性能实现方案,输出结果和原代码完全一致:

优化后代码

import pandas as pd
from datetime import datetime

df_list = []
for key, data, date in data_tuples:
    # 构造子表时直接指定浮点类型,省去后续类型转换开销
    df = pd.DataFrame(data, columns=['Price', 'Quantity'], dtype=float)
    timestamp = datetime.strptime(date, '%a, %d %b %Y %H:%M:%S GMT')
    # 直接为子表设置三级索引,无需反复拼接加keys
    df.index = pd.MultiIndex.from_product(
        [[key], [timestamp], df.index],
        names=['symbol', 'time', 'row']
    )
    df_list.append(df)

# 仅调用一次concat完成全量数据合并,无重复复制开销
final_df = pd.concat(df_list)

优化说明

  • 循环内仅做轻量的子表构造和索引设置操作,没有全量数据复制行为
  • 仅进行一次合并操作,时间复杂度从原方案的O(n²)降为O(n),万级以上数据量场景下性能提升可达百倍以上
  • 构造子表时直接指定数据类型,省去最后对数值列单独调用apply的冗余开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:04