如何仅向 python 中的某些列添加前缀

How to add prefix to only certain columns in python

我有一个包含 5 列的数据框,比如 'A'、'B'、'C'、'D' 和 'E'。我只想为列 'D' 和 E 添加前缀。我尝试了以下操作,但收到一条错误消息,提示“索引不支持可变操作”。

df.columns[-2:] = [str(col) + 'Ind_' for col in ['D','E']]

我该如何解决这个问题,或者有没有其他方法可以达到我想要的效果?谢谢

您可以使用重命名方法:

df = df.rename(columns = {
    'D':'Ind_D',
    'E':'Ind_E'
})

您的代码不起作用的原因:

索引不是可变的,它们是 Index 对象,因此您必须一起修改所有列。不支持切片赋值。

与元组一样,元组也是可变的,因此元组也不支持切片赋值。

如您所见:

>>> a = (1, 2, 3)
>>> a[:2] = (100, 200)
Traceback (most recent call last):
  File "<pyshell#106>", line 1, in <module>
    a[:2] = (100, 200)
TypeError: 'tuple' object does not support item assignment
>>> 

也会报错

解决方案:

类似于:

df.columns = np.concatenate([df.columns[:-2], df.columns[-2:] + 'Ind_'])

或:

df = df.rename(columns = lambda x: f"{x}Ind_" if x in {'D', 'E'} else x)

或:

df = df.set_axis(np.concatenate([df.columns[:-2], df.columns[-2:] + 'Ind_']), axis=1)

或者这样 concat:

df = pd.concat([df.iloc[:, :-2], df.iloc[:, -2:].add_suffix('Ind_')], axis=1)

join也是这样:

df = df.iloc[:, :-2].join(df.iloc[:, -2:].add_suffix('Ind_'))