【问题标题】:Rename column by column index pandas dataframe按列索引熊猫数据框重命名列
【发布时间】:2019-11-01 01:39:35
【问题描述】:

我想将以下数据框的第 1 列重命名为“Ref”。 我有很多列,因此无法重命名每个列或为每个列设置名称。

data = [['TC1', 103, 563], ['TC2', 1567, 1290], ['TC3', 1467, 567]] 

dftrash=pd.DataFrame(data, columns = ['Card', '', '']) 

这是数据框

    Card        
0   TC1 1037    8563
1   TC2 1567    1290
2   TC3 1467    567

现在我想将第一列重命名为“Ref”。 我试过这个

dftrash.rename(columns={dftrash.columns[1]:'REF'},inplace=True)

将所有具有与 column[1] 相似标题的列重命名。


    Card REF    REF
0   TC1 1037    8563
1   TC2 1567    1290
2   TC3 1467    567

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    pandas 中的列是不可变的 - 你最好的办法是创建 numpy 数组,通过索引设置值并赋值:

    #pandas 0.24+
    a = dftrash.columns.to_numpy()
    #pandas below
    #a = dftrash.columns.to_numpy()
    a[1] = 'REF'
    print (a)
    ['Card' 'REF' '']
    

    或将值转换为列表:

    a = dftrash.columns.tolist()
    a[1] = 'REF'
    print (a)
    ['Card', 'REF', '']
    

    dftrash.columns = a
    print (dftrash)
      Card   REF      
    0  TC1   103   563
    1  TC2  1567  1290
    2  TC3  1467   567
    

    In past versions of pandas was problem assign to numpy array,现在看起来效果不错,但仍然推荐第一个解决方案:

    dftrash.columns.values[1] = "REF"
    print (dftrash)
      Card   REF      
    0  TC1   103   563
    1  TC2  1567  1290
    2  TC3  1467   567
    

    【讨论】:

    • 谢谢耶兹瑞尔!这当然是一种方式。我想知道是否可以通过诸如 rename(columns={1:'Ref'}) 之类的索引进行重命名。我在某些线程中发现此按索引重命名但不起作用。
    • @haphaZard - 不,它不工作,因为重复的列名,所以需要另一个解决方案,如答案。
    【解决方案2】:

    我认为这可以完成工作:

    dftrash.columns = ['REF'] + list(dftrash.columns[1:])
    

    它基本上创建了新的名称列表,熊猫可以使用它来重命名列。或更笼统地说:

    new_names = list(dftrash.columns)
    new_names[0] = 'REF'
    dftrash.columns = new_names
    

    【讨论】:

      【解决方案3】:

      您可以提取列名,编辑列名,然后再次插入

      data = [['TC1', 103, 563], ['TC2', 1567, 1290], ['TC3', 1467, 567]]
      dftrash=pd.DataFrame(data, columns = ['Card', '', '']) 
      colnames = list(dftrash.columns)
      colnames[1] = "REF"
      dftrash.set_axis(colnames, axis=1, inplace=True)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-21
        • 2021-02-03
        • 1970-01-01
        • 2020-03-24
        • 2014-11-23
        • 2020-09-04
        • 2019-08-06
        相关资源
        最近更新 更多