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

如何一次性按索引合并多个含重复列的Pandas DataFrame?

多DataFrame按索引合并解决方案

你可以通过functools.reduce迭代执行你之前的双DataFrame合并逻辑,一次性完成所有DataFrame的合并,完整实现代码如下:

import pandas as pd
from functools import reduce

# 1. 把所有需要合并的DataFrame放到列表中,按你需要的合并顺序排列
dfs = [df1, df2, df3]

# 2. 定义单次合并逻辑,和你之前的双DataFrame合并逻辑完全一致
def merge_step(left_df, right_df):
    # 取右侧DataFrame和左侧已合并结果的不重复列
    diff_cols = right_df.columns.difference(left_df.columns)
    # 按索引对齐合并
    return pd.merge(left_df, right_df[diff_cols], left_index=True, right_index=True)

# 3. 迭代合并所有DataFrame
df_merged = reduce(merge_step, dfs)

# 可选:如果你需要统一将列重命名为col1、col2、col3...的格式
df_merged.columns = [f'col{i+1}' for i in range(df_merged.shape[1])]

注:你之前代码中用到的columns.differences为笔误,pandas 正确的列差方法名为columns.difference,上述代码已做修正。

该方案的逻辑和你之前双DataFrame合并的效果完全一致:每次合并只会把当前右侧DataFrame中没有出现在已合并结果里的列加进去,全程基于索引对齐,后续如果新增待合并的DataFrame,只需要添加到dfs列表中即可,不需要修改其他逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:24:04