问题:在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)
到目前为止,我发现的最优雅的解决方案…
names = df.columns.tolist()
names[names.index('two')] = 'new_name'
df.columns = names
我希望有一个简单的单线…此尝试失败了…
df.columns[df.columns.tolist().index('one')] = 'another_name'
非常感谢收到的任何提示。
回答 0
确实存在一行代码:
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
方法的文档字符串。
定义:df.rename(self,index = None,columns = None,copy = True,inplace = False) Docstring: 使用输入功能更改索引和/或列或 功能。函数/字典值必须唯一(1对1)。标签不行 dict / Series中包含的内容将保持不变。 参量 ---------- index:类似dict或函数,可选 转换以应用于索引值 列:类似字典或函数,可选 转换以应用于列值 复制:布尔值,默认为True 同时复制基础数据 inplace:布尔值,默认为False 是否返回新的DataFrame。如果为True,则复制值为 忽略了。 也可以看看 -------- Series.rename 退货 ------- 重命名为:DataFrame(新对象)
回答 1
由于inplace
argument是可用的,因此您无需复制原始数据帧并将其分配回自身,而是执行以下操作:
df.rename(columns={'two':'new_name'}, inplace=True)
回答 2
关于什么?
df.columns.values[2] = "new_name"
回答 3
熊猫0.21现在具有轴参数
重命名方法已获得一个axis参数,以匹配其余大多数熊猫API。
因此,除此以外:
df.rename(columns = {'two':'new_name'})
你可以做:
df.rename({'two':'new_name'}, axis=1)
要么
df.rename({'two':'new_name'}, axis='columns')
回答 4
如果您知道它是哪一列(第一列/第二列/第n列),那么在类似问题上发布的此解决方案都可以工作,无论它是命名还是未命名,都在一行中:https : //stackoverflow.com/a/26336314/ 4355695
df.rename(columns = {list(df)[1]:'new_name'}, inplace=True)
# 1 is for second column (0,1,2..)
回答 5
要重命名列,这里是一种简单的方法,它既Default(0,1,2,etc;)
适用于现有的列,也适用于现有的列,但对于较大的数据集(具有许多列)而言,用处不大。
对于更大的数据集,我们可以切片所需的列并应用以下代码:
df.columns = ['new_name','new_name1','old_name']
回答 6
以下简短代码可以帮助您:
df3 = df3.rename(columns={c: c.replace(' ', '') for c in df3.columns})
从列中删除空格。
回答 7
熊猫0.23.4版
df.rename(index=str,columns={'old_name':'new_name'},inplace=True)
作为记录:
省略index = str将给出错误替换,带有意外参数’columns’
回答 8
另一种选择是简单地复制和删除列:
df = pd.DataFrame(d)
df['new_name'] = df['two']
df = df.drop('two', axis=1)
df.head()
之后,您将得到结果:
one three new_name
0 1 a 9
1 2 b 8
2 3 c 7
3 4 d 6
4 5 e 5
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。