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

如何通过循环按列位置自动重命名DataFrame的同名列

Pandas 按位置顺序批量重命名同名列实现方案

以下方法无需手动枚举全量列名,可自动适配任意数量同名列的重命名场景。

  • 通用全列去重方案
    自动识别所有重名列,按出现顺序追加数字后缀:
from collections import defaultdict
import pandas as pd

def auto_rename_duplicate_cols(df: pd.DataFrame) -> pd.DataFrame:
    name_counter = defaultdict(int)
    new_columns = []
    for col_name in df.columns:
        name_counter[col_name] += 1
        # 若需要所有同名目标列都加序号(如第一个L也改为L1),删除下方if判断即可
        if name_counter[col_name] == 1:
            new_columns.append(col_name)
        else:
            new_columns.append(f"{col_name}{name_counter[col_name]}")
    df.columns = new_columns
    return df
  • 指定列重命名方案
    仅处理指定名称的重复列,其余列名保持不变,适配当前重命名L列的需求:
import pandas as pd

def rename_target_duplicate_cols(df: pd.DataFrame, target_col: str) -> pd.DataFrame:
    new_columns = []
    seq = 0
    for col_name in df.columns:
        if col_name == target_col:
            seq += 1
            new_columns.append(f"{target_col}{seq}")
        else:
            new_columns.append(col_name)
    df.columns = new_columns
    return df

# 调用示例:自动将所有L列按从左到右顺序重命名为L1、L2、L3...
df = rename_target_duplicate_cols(df, target_col="L")

注意:不要使用df.rename()处理同名列,该方法按列名做键值匹配,会将所有同名列统一修改为同一个名称,无法实现按位置区分的重命名效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:01:06