使用drop方法按列索引删重复列时误删首列的问题排查
解决方法:避免硬编码列索引,用列名去重保留首个ENZYME列
你遇到的问题核心是硬编码列索引容易数错——Pandas的列索引从0开始计数,你可能误判了重复ENZYME列的位置,导致意外删除了首列。
直接通过列名去重的方式更可靠,能自动保留每个列名第一次出现的实例,删除后续重复项:
# 保留每个列名首次出现的列,删除重复列 df_CL_HHA_2 = df_CL_HHA.loc[:, ~df_CL_HHA.columns.duplicated()]
如果需要更直观的分步写法,也可以这样:
# 遍历列名,记录已出现的列,只保留首次出现的 seen_columns = set() keep_columns = [] for col in df_CL_HHA.columns: if col not in seen_columns: seen_columns.add(col) keep_columns.append(col) df_CL_HHA_2 = df_CL_HHA[keep_columns]
为什么你的原代码会出错?
假设你的原始DataFrame列顺序是:ENZYME, 列1, ENZYME, 列2, ENZYME, 列3, ENZYME,对应的索引是0到6。你删除索引2、4、6的列,理论上应该保留索引0的ENZYME列。但实际首列被删除,大概率是你数错了列的索引位置——比如你把列按1开始计数,误将首列的索引0当成了其他值,或者原始DataFrame的列索引并非连续的(比如之前有过列删除操作导致索引断层),导致drop的索引意外包含了首列。
内容的提问来源于stack exchange,提问作者Victor Sharma
相关产品推荐
相关产品推荐

