在python中使用for循环重命名列时跳过第一列

2024-06-16 12:11:09 发布

您现在位置:Python中文网/ 问答频道 /正文

问题很简单,对于用一个代码重命名多个dataframe,我已经写了下面的代码,但是当我使用代码时,包含主键的列也被重命名了。我希望我的代码做的是跳过第一列并重命名其余的列

下面提供了代码,以便更好地理解我试图实现的目标:

import pandas as pd

USA = pd.read_excel(r"C:\Users\Rage\Desktop\usa.xlsx")
BRA = pd.read_excel(r"C:\Users\Rage\Desktop\usa.xlsx")
CAN = pd.read_excel(r"C:\Users\Rage\Desktop\usa.xlsx")


df_dict = {"USA":USA, "BRA":BRA, "CAN":CAN}

for name, df in df_dict.items():
        df.columns = df.columns + "_" + name

这给了我以下输出:

Primary Key_CAN local stat_CAN  valid stat_CAN  valid date_CAN
123                Approved        completed      2018-02-02
554                Restrict        pending        2020-06-05
789                Declined        pending        2016-08-07

这很完美,但有一个问题,我希望循环跳过第一列“主键” 使我的预期输出如下:

Primary Key   local stat_CAN      valid stat_CAN valid date_CAN
123                Approved        completed      2018-02-02
554                Restrict        pending        2020-06-05
789                Declined        pending        2016-08-07

Tags: 代码dfreadxlsxexcelcanusersstat
2条回答

您应该将columns索引拆分为两个子列表,并且只更改第二个子列表:

df.columns = [df.columns[0]] + (df.columns[1:] + '_' + 'CAN').tolist()

这对你有用

for name, df in df_dict.items():
        new_col = {c:c+"_"+name for c in df.columns[1:]}
        df.rename(columns=new_col, inplace = True)

相关问题 更多 >