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

如何快速合并20个含股票价格的Pandas时间序列DataFrame?

高效合并20个Pandas DataFrame的方法

问题分析

你尝试的循环方法无效,核心原因是未初始化df_merge变量——第一次循环时df_merge还不存在,自然会报错。即便修复初始化问题,逐次合并的方式对于20个DataFrame来说效率较低,因为每次合并都会产生新的DataFrame,时间复杂度接近O(n²)。

最快实现方式:使用pd.concat

针对每个DataFrame仅包含Date和单支股票价格的场景,pd.concat是最高效的合并方式,它能一次性完成所有DataFrame的对齐合并,时间复杂度为O(n)。

步骤:

  1. 先将每个DataFrame的Date列设为索引,这样所有DataFrame会以日期为键自动对齐。
  2. 沿列方向(axis=1)拼接所有处理后的DataFrame,使用outer连接保留所有日期。
  3. 最后将索引重新转换为Date列。

代码示例:

import pandas as pd

# 假设df_list是你的20个DataFrame组成的列表
# 第一步:为每个DataFrame设置Date为索引
processed_dfs = [df.set_index('Date') for df in df_list]

# 第二步:拼接所有DataFrame,outer连接保留全部日期
merged_df = pd.concat(processed_dfs, axis=1, join='outer')

# 第三步:将索引转回Date列
merged_df = merged_df.reset_index().rename(columns={'index': 'Date'})

修复原循环方法(备用)

如果你想保留逐次合并的逻辑,只需初始化df_merge为列表中的第一个DataFrame,再遍历剩余DataFrame进行合并:

df_list = [PACE, NYKAA, ASRL, ZOMATO]  # 你的DataFrame列表

# 初始化合并结果为第一个DataFrame
df_merge = df_list[0]
# 遍历剩余DataFrame进行合并
for df in df_list[1:]:
    df_merge = df_merge.merge(df, on='Date', how='outer')

但注意:这种方法的效率远低于pd.concat,尤其当DataFrame数量较多或数据量较大时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:00:55