Python-重命名pandas列

发布于 2021-02-02 23:23:03

我有一个使用pandas和列标签的DataFrame,我需要对其进行编辑以替换原始列标签。

我想A在原始列名称为的DataFrame 中更改列名称:

['$a', '$b', '$c', '$d', '$e'] 

['a', 'b', 'c', 'd', 'e'].

我已经将编辑后的列名存储在列表中,但是我不知道如何替换列名。

关注者
0
被浏览
154
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    只需将其分配给.columns属性:

    >>> df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
    >>> df.columns = ['a', 'b']
    >>> df
       a   b
    0  1  10
    1  2  20
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    重命名特定列

    使用该df.rename()函数并引用要重命名的列。并非所有列都必须重命名:

    df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
    # Or rename the existing DataFrame (rather than creating a copy) 
    df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)
    

    最小代码示例

    df = pd.DataFrame('x', index=range(3), columns=list('abcde'))
    df
    
       a  b  c  d  e
    0  x  x  x  x  x
    1  x  x  x  x  x
    2  x  x  x  x  x
    

    下列方法均起作用并产生相同的输出:

    df2 = df.rename({'a': 'X', 'b': 'Y'}, axis=1)  # new method
    df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns')
    df2 = df.rename(columns={'a': 'X', 'b': 'Y'})  # old method  
    
    df2
    
       X  Y  c  d  e
    0  x  x  x  x  x
    1  x  x  x  x  x
    2  x  x  x  x  x
    

    切记将结果分配回去,因为修改未就位。或者,指定inplace=True:

    df.rename({'a': 'X', 'b': 'Y'}, axis=1, inplace=True)
    df
    
       X  Y  c  d  e
    0  x  x  x  x  x
    1  x  x  x  x  x
    2  x  x  x  x  x
    

    从v0.25版开始,如果指定errors='raise'了无效的“要重命名的列” ,你还可以指定引发错误。参见v0.25 rename()文档。

    REASSIGN列标题

    df.set_axis()axis=1inplace=False一起使用(返回副本)。

    df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1, inplace=False)
    df2
    
       V  W  X  Y  Z
    0  x  x  x  x  x
    1  x  x  x  x  x
    2  x  x  x  x  x
    

    这将返回一个副本,但是你可以通过设置来就地修改DataFrame inplace=True(这是版本<= 0.24的默认行为,但将来可能会更改)。

    你还可以直接分配标题:

    df.columns = ['V', 'W', 'X', 'Y', 'Z']
    df
    
       V  W  X  Y  Z
    0  x  x  x  x  x
    1  x  x  x  x  x
    2  x  x  x  x  x
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看