Pandas中保留DataFrame唯一列:解决重复列删除报错问题
解决Pandas处理Excel重复列时的报错问题
当Excel文件存在多列名称和值完全相同的情况(如3个2G_configuredMaxTxPower列),直接通过列名删除重复列会触发「2G_configuredMaxTxPower not found in axis」报错,以下是两种可靠的解决方法:
方法一:全局处理所有重复列(保留每组重复列的第一个)
这种方法会自动识别所有名称和值都重复的列,只保留每组中的第一列:
import pandas as pd # 读取Excel文件 df = pd.read_excel("你的文件路径.xlsx") # 转置DataFrame,将列转为行,标记重复的行(原重复列) # keep='first'表示保留第一个出现的列,后续重复列标记为True duplicated_cols = df.T.duplicated(keep='first') # 筛选出需要保留的列(取反后,True变为False,False变为True) df_unique = df.loc[:, ~duplicated_cols]
方法二:针对特定重复列处理
如果已知具体重复的列名(如2G_configuredMaxTxPower),可以精准保留该列的第一个实例,删除其余重复列:
import pandas as pd df = pd.read_excel("你的文件路径.xlsx") # 找出目标列的所有索引位置 target_col = "2G_configuredMaxTxPower" col_positions = [idx for idx, col_name in enumerate(df.columns) if col_name == target_col] # 若存在多个重复列,删除第一个之外的所有列 if len(col_positions) > 1: df = df.drop(df.columns[col_positions[1:]], axis=1)
报错原因说明
直接使用df.drop("2G_configuredMaxTxPower", axis=1)时,Pandas无法处理同名多列的删除逻辑——第一次删除后,剩余的同名列索引会混乱,再次执行删除操作就会提示列名不存在。而上述两种方法通过索引定位或布尔筛选,能精准操作重复列,避免报错。
内容的提问来源于stack exchange,提问作者Prashant Sharma
相关产品推荐
相关产品推荐

