【问题标题】:Renaming columns of many dfs with the elements of a list用列表的元素重命名许多 dfs 的列
【发布时间】:2020-09-20 04:19:32
【问题描述】:

我有 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) 重命名。我该如何解决这个问题?谢谢..

【问题讨论】:

    标签: python pandas rename


    【解决方案1】:

    这是因为当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_controlesfiles 中的元素数量相同。如果没有,还有其他方法可以做到。

    【讨论】:

    • 不客气。实际上,这里唯一不同的是enumerate。你可以谷歌它并了解它是什么。其余的只是逻辑,通过练习提高。 hackerrank.com 真的是练python的好地方。
    猜你喜欢
    • 2020-09-17
    • 2021-03-14
    • 1970-01-01
    • 2021-08-14
    • 2011-10-16
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多