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

如何将同列名DataFrame列表的指定列合并并重命名为新DataFrame?

高效合并多DataFrame并重命名列的实现方法

可以通过批量处理列重命名+按日期合并的方式高效实现,以下是两种常用的高效方案:

方案一:循环合并(适合Date为普通列的场景)

先遍历每个DataFrame,提取目标列并重命名,再逐次按Date列合并:

import pandas as pd

# 批量处理每个DataFrame:提取Date、Price列,并重命名Price为Price1~Price10
processed_dfs = []
for idx, df in enumerate(dfs, start=1):
    temp_df = df[["Date", "Price"]].rename(columns={"Price": f"Price{idx}"})
    processed_dfs.append(temp_df)

# 以第一个处理后的DataFrame为基础,依次合并其余DataFrame
merged_df = processed_dfs[0]
for df in processed_dfs[1:]:
    # how='outer'保留所有日期,若只需共同日期可改为'inner'
    merged_df = merged_df.merge(df, on="Date", how="outer")

方案二:concat合并(适合将Date设为索引的场景,效率更高)

将Date设为索引后,直接按列拼接,性能更优:

import pandas as pd

# 批量处理:提取列、重命名、设置Date为索引
processed_dfs = [
    df[["Date", "Price"]]
    .rename(columns={"Price": f"Price{idx}"})
    .set_index("Date")
    for idx, df in enumerate(dfs, start=1)
]

# 按列拼接所有DataFrame,最后恢复Date为普通列
merged_df = pd.concat(processed_dfs, axis=1).reset_index()

说明

  • 两种方案都利用了pandas的向量化操作,避免了低效的逐行处理
  • 若所有DataFrame的Date列完全一致,concat方案的执行效率会更高
  • 可根据实际需求选择merge的连接方式(outer/inner)来控制日期的保留范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:50:25