如何基于指定位置重命名DataFrame中的重复列
解决Pandas按位置重命名重复列的问题
问题根源
rename()方法是按列名字典映射实现重命名的——哪怕你通过df.columns[position]获取列名,本质还是传入了列名字符串,所有同名的列都会被匹配并重命名,这就是重复列被一起修改的核心原因。
通用解决方案
直接操作DataFrame的列名列表,修改指定位置的元素即可,完全不受重复列名干扰:
实现步骤
- 将列名转换为可修改的列表
- 根据配置文件指定的位置,替换列表中对应索引的列名
- 将修改后的列表重新赋值给DataFrame的列名
示例代码
假设从配置文件中读取到position = 0,新列名new_header = 'statename':
# 获取列名列表 cols = df.columns.tolist() # 修改指定位置的列名 cols[position] = new_header # 重新赋值列名 df.columns = cols
效果验证
原列名:state city country state
修改后列名:statename city country state
仅位置0的列被重命名,另一列state保持不变,完全符合需求。
方案通用性说明
- 无需关注重复列的具体名称,仅依赖配置文件指定的位置和新列名
- 适配任意数量、任意名称的重复列场景
- 操作直接,规避了
rename()方法的匹配歧义
内容的提问来源于stack exchange,提问作者MPasks
相关产品推荐
相关产品推荐

