python - 如何为python中的某些列添加前缀
问题描述
我有一个包含 5 列的数据框,例如“A”、“B”、“C”、“D”和“E”。我只想为列“D”和 E 添加前缀。我尝试了以下操作,但收到一条错误消息,提示“索引不支持可变操作”。
df.columns[-2:] = [str(col) + 'Ind_' for col in ['D','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_'))
推荐阅读
- angular - "{} = {}" 在 Angular 构造函数中使用时有什么作用?
- active-directory - 如何登录没有设置密码的 Active Directory 帐户?
- python - 创建行数等于列表中元素数的字符串行
- c# - 从 ASP .NET Core Web API 方法返回完整的 XML 响应
- python - 导出特征重要性时添加额外的列
- android - Firebase 性能 - 将 SDK 添加到应用程序,但控制台仍然说要添加 SDK
- c++ - 如果我已经有标题,那么模板(.t)文件属于哪里?
- python - Tweepy 为 realDonaldTrump 返回不一致且不完整的结果
- java - 从 AWS Lambda 内部以编程方式触发 CloudWatch 事件
- javascript - shopify 主题 api 创建主题