我正在寻找一种优雅的方法来更改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'

感激地接受任何提示。


当前回答

如果你知道#它是哪一列(第一/第二/第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..)

其他回答

熊猫0.21现在有一个轴参数

rename方法获得了一个轴参数,以匹配pandas API的大多数其他部分。

所以,除此之外:

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

你可以:

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

or

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

对于重命名列,这里使用的是一个简单的方法,它适用于Default(0,1,2,等等;)和现有列,但对于较大的数据集(有许多列)用处不大。

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

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

关于什么?

df.columns[2] = "new_name"

如果你知道#它是哪一列(第一/第二/第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..)

由于inplace参数可用,你不需要将原始数据帧复制并赋值给它本身,而是按照以下步骤执行:

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