如何重命名与另一列同名的列

Posted

技术标签:

【中文标题】如何重命名与另一列同名的列【英文标题】:How to rename a column which have a same name with another one 【发布时间】:2016-10-20 01:53:18 【问题描述】:

我有一个数据框如下...

  AA BB CC DD EE ... LL MM NN NN
0 a0 b0 c0 d0 e0 ... l0 m0 x0 y0
1 a1 b1 c1 d1 e1 ... l1 m1 x1 y1
2 a2 b2 c2 d2 e2 ... l2 m2 x2 y2
3 a3 b3 c3 d3 e3 ... l3 m3 x3 y3

我想更改右边缘的“NN”的名称。

有人说你应该使用dataframe.columns = [AA,BB,CC...,NN,ZZ]

但是,就我而言,列数太多,无法使用此方法。

我已经尝试如下...

dataframe.columns[-1] = 'ZZ'

不过,我刚刚拿到了脚本

TypeError:索引不支持可变操作。

【问题讨论】:

【参考方案1】:

您可以在没有最后一个的情况下对所有列名称进行切片,使用tolist 创建新的list,添加新名称['ZZ'] 并重新分配回df.columns

df.columns = df.columns[:-1].tolist() + ['ZZ'] 
print (df)
   AA  BB  CC  DD  EE  ...  LL  MM  NN  ZZ
0  a0  b0  c0  d0  e0  ...  l0  m0  x0  y0
1  a1  b1  c1  d1  e1  ...  l1  m1  x1  y1
2  a2  b2  c2  d2  e2  ...  l2  m2  x2  y2
3  a3  b3  c3  d3  e3  ...  l3  m3  x3  y3

【讨论】:

【参考方案2】:

将列复制到新列表,修改列表的最后一个索引,并重新分配回df.columns

>>> col = list(df.columns)
>>> col
['z', 'z']
>>> col[-1] = 'ZZ'
>>> df.columns = col
>>> df
   z  ZZ
0  1  10
1  2  20

【讨论】:

以上是关于如何重命名与另一列同名的列的主要内容,如果未能解决你的问题,请参考以下文章

数据透视表列重命名

用名称中的句点重命名clickhouse中的列

重命名未命名的列熊猫数据框

使用文件名列表重命名批处理文件

对于每个类别,如何找到与另一列的最小值对应的列的值?

根据另一列中的元素重命名特定列元素