You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中重复year列无法保留单个删除其余的技术问询

解决Pandas中重复列名的删除问题

我明白你的困扰——当DataFrame里有多个同名且值完全一致的列时,直接用列名删除会把所有对应列都删掉,确实很头疼。下面给你几个靠谱的解决方案:

  • 方法一:保留每个列名第一次出现的列,自动去重
    这个方法最直观,遍历所有列名,只保留第一次出现的列,然后重新生成DataFrame:

    # 筛选出不重复的列名,保留首次出现的顺序
    unique_columns = []
    for col in gpd_cinc_merged.columns:
        if col not in unique_columns:
            unique_columns.append(col)
    # 用筛选后的列名重新构建DataFrame
    gpd_cinc_merged = gpd_cinc_merged[unique_columns]
    

    这样处理后,每个列名只会保留第一列,刚好符合你要保留一个year列的需求。

  • 方法二:精准删除指定索引的重复列
    你之前尝试按索引删除但没成功,大概率是只删了其中一个重复的year列,还有其他的没处理。看你给出的列索引,year出现在位置4、7、13、14。如果要保留第一个year,删除剩下三个,可以这样写:

    # 指定要删除的重复列的索引,这里是7、13、14
    gpd_cinc_merged.drop(gpd_cinc_merged.columns[[7, 13, 14]], axis=1, inplace=True)
    

    注意:一定要确认好要删除的列的索引,避免误删其他列。

  • 方法三:用groupby快速去重(简洁写法)
    利用转置+分组的方式,快速对同名列去重,保留每组的第一个列:

    # 转置后按列名(此时为行索引)分组,取每组第一个再转置回来
    gpd_cinc_merged = gpd_cinc_merged.T.groupby(level=0).first().T
    

    这个方法代码更简洁,适合处理大量重复列的场景。

为什么之前的操作没生效?

当你使用gpd_cinc_merged.drop('year', axis=1, inplace=True)时,Pandas会匹配所有名为year的列并全部删除;而你之前只删除了索引7的列,剩下的13、14位置还有year列,所以看起来还是有多个重复列。

内容的提问来源于stack exchange,提问作者Jasper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:45:45