更改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})
从列中删除空格。