更改pandas DataFrame中的特定列名称

我正在寻找一个优雅的方式来更改DataFrame指定的列名称。

播放数据…

 import pandas as pd d = { 'one': [1, 2, 3, 4, 5], 'two': [9, 8, 7, 6, 5], 'three': ['a', 'b', 'c', 'd', 'e'] } df = pd.DataFrame(d) 

迄今为止我find的最优雅的解决scheme…

 names = df.columns.tolist() names[names.index('two')] = 'new_name' df.columns = names 

我希望能有一个简单的单线……这个尝试失败了…

 df.columns[df.columns.tolist().index('one')] = 'another_name' 

任何提示,感激地收到。

一个class轮确实存在:

 In [27]: df=df.rename(columns = {'two':'new_name'}) In [28]: df Out[28]: one three new_name 0 1 a 9 1 2 b 8 2 3 c 7 3 4 d 6 4 5 e 5 

以下是rename方法的文档string。

定义:df.rename(self,index = None,columns = None,copy = True,inplace = False)
文档string:
使用input函数或者改变索引和/或列
function。 函数/字典值必须是唯一的(1对1)。 标签不是
包含在一个字典/系列将保持原样。

参数
 ----------
索引:字典或函数,可选
    将转换应用于索引值
列:字典或函数,可选
    应用于列值的转换
复制:布尔值,默认为True
    也复制底层数据
 inplace:布尔值,默认为False
    是否返回一个新的DataFrame。 如果为True,则复制值为
    忽略。

也可以看看
 --------
 Series.rename

返回
 -------
改名为:DataFrame(新对象)

由于inplace参数可用,因此不需要复制原始dataframe并将其分配给自身,但按如下所述进行操作:

 df.rename(columns={'two':'new_name'}, inplace=True) 

关于什么?

 df.columns.values[2] = "new_name" 

pandas0.21现在有一个轴参数

重命名方法已经获得了一个轴参数来匹配大部分pandasAPI的其余部分。

所以,除此之外:

 df.rename(columns = {'two':'new_name'}) 

你可以做:

 df.rename({'two':'new_name'}, axis=1) 

要么

 df.rename({'two':'new_name'}, axis='columns') 

重命名这里的列是一个简单的Default(0,1,2,etc;)和现有的列,但没有太多有用的更大的数据集(有很多列)。

对于更大的数据集,我们可以分割我们需要的列并应用下面的代码:

 df.columns = ['new_name','new_name1','old_name'] 

以下短代码可以帮助:

 df3 = df3.rename(columns={c: c.replace(' ', '') for c in df3.columns}) 

从列中删除空格。