如何在Pandas DataFrame存在重名列时重命名或删除指定列
Pandas 处理重复列名:指定列重命名与删除方法
一、重命名指定的重复列
当DataFrame存在重复列名时,直接调用df.rename(columns={'old_name':'new_name'})会批量修改所有同名列。如果只想修改其中某一个指定的重复列,可以通过列的位置索引来精准操作:
操作示例
- 先创建带重复列的测试DataFrame:
import pandas as pd df = pd.DataFrame([[1,2,3], [4,5,6]], columns=['data', 'data', 'data'])
- 将列名转为可修改的列表,修改指定位置后重新赋值:
col_names = df.columns.tolist() # 修改第2个(索引为1)"data"列名为"data_processed" col_names[1] = 'data_processed' df.columns = col_names
- 也可以直接通过列索引值修改(更简洁):
# 修改第3个(索引为2)"data"列名为"data_final" df.columns.values[2] = 'data_final'
二、删除指定的重复列
直接用df.drop('old_name', axis=1)会删除所有同名列。要删除指定的某一个重复列,同样需要通过列位置索引来操作:
操作示例
- 用列索引直接删除目标列:
# 删除第2个(索引为1)"data"列 df = df.drop(df.columns[1], axis=1)
- 先定位所有同名列的位置,再选择删除:
# 获取所有名为"data"的列的索引 target_indices = [idx for idx, name in enumerate(df.columns) if name == 'data'] # 删除第1个(索引为0)同名列 df = df.drop(df.columns[target_indices[0]], axis=1)
- 用
iloc选择保留的列(间接删除目标列):
# 保留除第3个(索引为2)列之外的所有列 df = df.iloc[:, [0,1]]
内容的提问来源于stack exchange,提问作者Yuv_c
相关产品推荐
相关产品推荐

