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