如何用Pandas替代openpyxl实现现有Python代码功能?
使用Pandas替代openpyxl修改Excel工作表名称
原代码的核心功能是遍历指定目录下的Excel文件,将名称为(不区分大小写的HI MAPPING)或包含HI Mapping1的工作表统一重命名为HI Mapping。以下是用Pandas实现的等效代码:
import pandas as pd import os import shutil # 设置目标目录 path = "D:/Project/Backup/" os.chdir(path) files = os.listdir(path) for f in files: # 仅处理Excel格式文件 if f.endswith(('.xlsx', '.xls')): # 先备份原文件,避免数据丢失 shutil.copy(f, f"{f}.bak") # 读取Excel文件的所有工作表信息 xls = pd.ExcelFile(f) # 构建工作表名称映射关系 sheet_mapping = {} for sheet_name in xls.sheet_names: # 判断是否需要重命名 if sheet_name.upper().strip() == "HI MAPPING" or "HI Mapping1" in sheet_name: sheet_mapping[sheet_name] = "HI Mapping" else: sheet_mapping[sheet_name] = sheet_name # 将所有工作表按新名称写入原文件(覆盖) with pd.ExcelWriter(f, engine="openpyxl") as writer: for old_name, new_name in sheet_mapping.items(): # 读取原工作表数据 df = pd.read_excel(xls, sheet_name=old_name) # 写入新名称的工作表,不保留索引列 df.to_excel(writer, sheet_name=new_name, index=False)
关键说明:
- 依赖安装:需要确保已安装
pandas和openpyxl,可通过命令安装:pip install pandas openpyxl - 文件备份:代码中加入了原文件备份逻辑,处理后会生成
.bak后缀的备份文件,防止意外丢失数据 - 格式兼容:使用
openpyxl引擎支持.xlsx格式,若需处理.xls文件,需替换引擎为xlrd(注意:xlrd 2.0+版本不再支持.xls,需安装旧版本pip install xlrd==1.2.0) - 效率优化:相比原openpyxl多次保存文件的逻辑,Pandas通过一次性写入所有工作表,减少了IO操作次数
内容的提问来源于stack exchange,提问作者Chirantan Mandal
相关产品推荐
相关产品推荐

