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

如何使用Pandas删除Excel工作簿各工作表中数据重复的列?

处理Excel多工作表重复列的解决方案

嘿,这个需求我之前帮同事处理过,用Pandas完全可以轻松搞定,分四步走就行,我给你把代码和逻辑都讲清楚:

1. 读取整个Excel工作簿

首先我们要把所有工作表都读进来,用pd.read_excel()加上sheet_name=None参数,这样会返回一个字典——键是工作表名称,值是对应工作表的DataFrame。

import pandas as pd

# 读取整个工作簿,得到{工作表名: DataFrame}的字典
excel_dict = pd.read_excel("你的文件路径.xlsx", sheet_name=None)

2. 定义处理单个工作表的核心函数

核心逻辑是:把DataFrame转置(列变行),然后删除重复的行(也就是原来的重复列),再转置回原结构。这里用keep='first'表示保留第一个出现的列,删掉后面重复的(刚好符合你例子里留2014删2016的需求)。

def remove_duplicate_columns(df):
    # 转置后删除重复行,再转置回原结构,保留第一个出现的列
    return df.T.drop_duplicates(keep='first').T

3. 遍历所有工作表批量处理

循环刚才得到的字典,对每个工作表应用上面的函数,生成处理后的新字典:

# 处理每个工作表,保存到新字典
processed_excel_dict = {sheet_name: remove_duplicate_columns(df) for sheet_name, df in excel_dict.items()}

4. 将处理后的工作表保存回Excel

用pd.ExcelWriter来批量写入所有工作表,注意要设置engine='openpyxl'(针对xlsx格式)避免格式丢失:

# 写入处理后的工作簿
with pd.ExcelWriter("处理后的文件路径.xlsx", engine='openpyxl') as writer:
    for sheet_name, df in processed_excel_dict.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)

额外小Tips

  • 这个方法不关心列名是否相同,只要数据内容完全一致就会被判定为重复列,完美匹配你的需求;
  • 如果想保留最后一个出现的列,只需要把keep='first'改成keep='last'就行;
  • 如果你的Excel是xls格式,把engine='openpyxl'换成engine='xlwt'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:33:22