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

如何在Pandas中就地删除重复列名?

就地删除DataFrame中列名重复的列(高效版)

需求说明

需要高效地就地操作,删除DataFrame中列名重复的列(仅保留列名首次出现的列,无论列值是否重复),同时保留列名不同但值相同的列,避免创建临时副本以适配大型数据集清洗场景。

核心解决方案

通过df.drop()配合inplace=True参数直接在原DataFrame上删除重复列名的列,步骤如下:

  1. 定位所有非首次出现的重复列名
  2. 就地删除这些列

完整代码示例

import pandas as pd
# 构建测试数据
df = pd.DataFrame([[0, 1, 2, 0, 0],[1, 2, 3, 1, 1], [2, 3, 4, 2, 2]], columns=iter('ABCAD'))

# 获取重复列名(非首次出现的)
duplicate_cols = df.columns[df.columns.duplicated()]
# 就地删除重复列
df.drop(columns=duplicate_cols, inplace=True)

# 输出结果
print(df)

关键细节说明

  • 高效性:此操作直接修改原DataFrame对象,不会生成完整的DataFrame副本,内存占用远低于df = df.loc[:, ~df.columns.duplicated()]这种重新赋值的方式,适合处理GB级以上的大型数据集。
  • 保留规则:df.columns.duplicated()默认使用keep='first',即保留列名首次出现的列,删除后续重复列;若需保留最后一次出现的列,可改为df.columns.duplicated(keep='last')。
  • 列值无关性:仅依据列名判断重复,完全不考虑列值是否相同,符合需求中"保留列名不同但值相同的列"的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:05:09