首页 > 解决方案 > 用列表的元素重命名许多 dfs 的列

问题描述

我有 5 个数据帧,分别称为 control1、control2、control3、control4、control5。我正在重命名他们的列。但是我想用文件中的每个元素重命名名为 10(整数名称)的列。像这样的东西:

    control1.rename(columns={10:'02042020.txt'}, inplace=True)
    control2.rename(columns={10:'05032020.txt'}, inplace=True)
    #...... etc etc 

这是我的代码:

        lista_controles=[control1,control2,control3,control4,control5]
        files=['02042020.txt','05032020.txt','12032020.txt','19032020.txt','26032020.txt']
        for df in lista_controles:
            df.rename(columns={2:'NOMBRE_ESTACION'}, inplace=True)
            for i in files 
               df.rename(columns={10:f'{i}'}, inplace=True)

但仅使用列表的第一个元素(02042020.txt)重命名。我该如何解决这个问题?谢谢..

标签: pythonpandasrename

解决方案


这是因为df.rename(columns={10:f'{i}'}, inplace=True)第一次运行时,它会将名称“10”更改为“02042020.txt”。在第二次迭代中,不再有任何名为“10”的列,因此它什么也不做,因为它只是已更改为“02042020.txt”。

你可以试试:

for i, df in enumerate(lista_controles):
    df.rename(columns={2:'NOMBRE_ESTACION'}, inplace=True)
    df.rename(columns={10:files[i]}, inplace=True)

要完成这项工作,请确保您有相同数量的lista_controles元素files。如果没有,还有其他方法可以做到这一点。


推荐阅读