【问题标题】:how to rename columns in pandas using a list如何使用列表重命名熊猫中的列
【发布时间】:2017-03-20 03:20:22
【问题描述】:

我有一个包含 44 列的数据框 (df),我想将列重命名为 2:44。我有一个长度为 42 的列表 (namesList),其中包含新的列名。然后我尝试使用列表重命名我的列:

df.columns[2:len(df.columns)] = namesList

但是我得到了错误:

TypeError:索引不支持可变操作

为什么会出现此错误?

【问题讨论】:

    标签: python list pandas rename multiple-columns


    【解决方案1】:

    您需要生成新的列名——第一个和第二个值来自旧列名,另一个来自list

    df.columns = df.columns[:2].tolist() + namesList
    

    示例:

    df = pd.DataFrame({'A':[1,2,3],
                       'B':[4,5,6],
                       'C':[7,8,9],
                       'D':[1,3,5],
                       'E':[5,3,6],
                       'F':[7,4,3]})
    
    print (df)
      A  B  C  D  E  F
    0  1  4  7  1  5  7
    1  2  5  8  3  3  4
    2  3  6  9  5  6  3
    
    namesList = ['K','L','M','N']
    df.columns = df.columns[:2].tolist() + namesList
    print (df)
       A  B  K  L  M  N
    0  1  4  7  1  5  7
    1  2  5  8  3  3  4
    2  3  6  9  5  6  3
    

    【讨论】:

    • 在尝试执行此操作时,我们是否应该期望“索引不支持可变操作”?
    • @Amir - 您是否将新的列名列表分配给列?如果是,那么不是。
    【解决方案2】:

    我遇到了重命名前 N 列和最后 N 列的情况。 根据需要替换 N 的值。

    1) 重命名最后 N 列(忽略前 2 列)

    cols_to_update = df.columns[:N].tolist() + ['col2_new','col3_new']
    df.columns = cols_to_update
    

    2) 重命名前 N 列(忽略最后 N 列)

    cols_to_update = ['col3_new','col4_new'] + df.columns[N:].tolist()
    df.columns = cols_to_update
    

    3) 重命名中间的列

    cols_to_update = df.columns[:N].tolist() + ['col2_new','col3_new'] + df.columns[Y:].tolist()
    df.columns = cols_to_update
    

    4) 重命名所有列 - 确保您分配的列表与 df.columns 的长度相同。

    list = ['col1_new','col2_new', 'col3_new','col4_new']
    df.columns = list
    

    您可以找到更多示例@Multiple ways to Rename Columns in pandas

    【讨论】:

      猜你喜欢
      • 2020-07-04
      • 2021-08-15
      • 2020-07-30
      • 2019-05-25
      • 2017-11-02
      • 2021-02-03
      • 2022-11-16
      • 2021-10-25
      相关资源
      最近更新 更多