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

Python中用reduce合并DataFrame后,如何修改各数据框列名?

解决Pandas多DataFrame合并后列名重复的问题

合并后列名重复是因为多个date_gameX里除了just_date之外的列名一致,Pandas会自动给重复列添加_x、_y这类后缀。最稳妥的解决方式是在合并前给每个DataFrame的非关联列加上唯一标识,具体实现如下:

方法一:批量提前重命名(推荐)

先把所有DataFrame放入列表,循环给每个DataFrame的非just_date列添加对应索引的后缀,确保列名唯一:

from functools import reduce
import pandas as pd

# 将所有待合并的DataFrame存入列表
df_list = [date_game0, date_game1, date_game2, date_game3, date_game4, 
           date_game5, date_game6, date_game7, date_game8, date_game9, date_game10]

# 循环重命名每个DataFrame的列
for idx, df in enumerate(df_list):
    # 仅修改除just_date外的列名,添加索引后缀
    new_columns = []
    for col in df.columns:
        if col == 'just_date':
            new_columns.append(col)
        else:
            new_columns.append(f"{col}_{idx}")
    df.columns = new_columns

# 执行合并
dfs = reduce(lambda x,y: pd.merge(x,y, on='just_date', how='outer'), df_list)

方法二:合并时动态指定后缀

如果不想提前修改原DataFrame,可以在每次合并过程中给新加入的DataFrame列名添加唯一后缀:

from functools import reduce
import pandas as pd

def merge_with_unique_suffix(x, y):
    # 提取已存在的后缀数字,确定下一个后缀序号
    existing_suffixes = []
    for col in x.columns:
        if col != 'just_date' and '_' in col:
            try:
                suffix = int(col.split('_')[-1])
                existing_suffixes.append(suffix)
            except ValueError:
                pass
    next_idx = max(existing_suffixes) + 1 if existing_suffixes else 0
    
    # 重命名当前待合并的DataFrame的列
    y_renamed = y.rename(columns={col: f"{col}_{next_idx}" for col in y.columns if col != 'just_date'})
    return pd.merge(x, y_renamed, on='just_date', how='outer')

# 初始化第一个DataFrame,给它的非关联列加后缀0
initial_df = date_game0.rename(columns={col: f"{col}_0" for col in date_game0.columns if col != 'just_date'})

# 合并剩余DataFrame
dfs = reduce(merge_with_unique_suffix, 
             [date_game1, date_game2, date_game3, date_game4, date_game5, 
              date_game6, date_game7, date_game8, date_game9, date_game10], 
             initial_df)

两种方法都能避免列名重复,方法一逻辑更直观,适合DataFrame数量较多的场景,便于后续维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:05:24