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

如何基于列值删除Pandas DataFrame中列名不同的重复列

解决Pandas DataFrame删除值重复(列名不同)列的问题

要处理这类列名不同但值完全重复的列,核心思路是基于列的内容而非列名来检测重复,可以通过转置DataFrame后使用duplicated()方法实现,具体步骤如下:

示例代码

先构造符合需求的测试DataFrame:

import pandas as pd

# 构造原DataFrame
data = {
    'col1': [1, 2, 3, 4],
    'col2': ['a', 'b', 'c', 'd'],
    'col3': [1, 2, 3, 4],  # 和col1值完全一致
    'col4': ['a', 'b', 'c', 'd'],  # 和col2值完全一致
    'col5': [True, False, True, False]
}
DF = pd.DataFrame(data)

接下来执行去重操作:

# 转置后检测重复行(对应原DataFrame的重复列),保留每组重复中的第一个
DF_new = DF.loc[:, ~DF.T.duplicated()]

结果验证

输出DF_new会得到只包含col1、col2、col5的DataFrame,完全符合需求。

原理说明

  • DF.T将原DataFrame转置,此时原有的列变成行,列的内容变成行的内容
  • duplicated()会标记出重复的行(即原DataFrame中值重复的列),默认保留第一个出现的行,标记后续重复行为True
  • ~对布尔结果取反,得到需要保留的列的索引,再通过loc[:, ...]筛选出目标列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:01:24