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

如何在Pandas中查找并动态移除全量重复列?

在Pandas中移除值完全重复的列(含列名重复/不同但值一致的情况)

要动态移除DataFrame中所有记录值完全相同的重复列,同时保留首次出现的列,可以通过以下步骤实现:

核心思路

将DataFrame转置,把列转换为行,这样就能用duplicated()方法识别值完全一致的行(即原数据中的重复列),最后筛选出非重复的列即可。这个方法同时覆盖两种场景:

  • 列名完全重复且值一致的列
  • 列名不同但所有记录值完全一致的列

代码实现

1. 构造示例数据

import pandas as pd

data = {
    'Id': [1, 2, 3, 4, 5],
    'ProductName': ['Shoes', 'Bag', 'Laptop', 'Shoes', 'Laptop'],
    'ProductSize': ['9', 'XL', '16INCH', '9', '14INCH'],
    'ProductSize': ['9', 'XL', '16INCH', '9', '14INCH'],
    'ProductDesc': ['Shoes', 'Bag', 'Laptop', 'Shoes', 'Laptop'],
    'Quantity': [143, 342, 452, 143, 452],
    'SoldCount': [143, 342, 452, 143, 452],
    'Sales': [6374, 2839, 8293, 3662, 7263]
}
df = pd.DataFrame(data)

2. 移除重复列

# 转置后标记重复列,保留首次出现的列
df_output = df.loc[:, ~df.T.duplicated(keep='first')]
print(df_output)

输出结果

Id ProductName ProductSize  Quantity  Sales
0   1        Shoes           9       143   6374
1   2          Bag          XL       342   2839
2   3       Laptop      16INCH       452   8293
3   4        Shoes           9       143   3662
4   5       Laptop      14INCH       452   7263

代码解释

  • df.T:将DataFrame转置,把原有的列转换为行,行转换为列。
  • duplicated(keep='first'):标记转置后重复的行(对应原数据中的重复列),keep='first'表示保留首次出现的列,后续重复列标记为True。
  • ~:对布尔值取反,得到需要保留的列的索引。
  • df.loc[:, ...]:根据筛选出的索引保留对应列,生成去重后的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:50:17