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

Pandas如何读取大小写不同的同名Excel工作表并合并数据

解决方案

核心逻辑是先读取Excel文件的工作表名称列表,统一转为小写后匹配目标表名,再用匹配到的原始表名读取数据,修改后的完整代码如下:

## 2020
import glob as glob 
import pandas as pd
import datetime
pd.set_option('display.max_rows', None)

data2020 = glob.glob('*20*')
cols = ["VendorName", "VendorNo", "InvoiceNumber", "IvaPagadoOriginal","PeriodoEdo"]
li3 = []
for filename in data2020:
    # 读取Excel文件对象,获取所有工作表名
    xls = pd.ExcelFile(filename)
    target_sheet = None
    # 遍历工作表名,统一转小写后匹配
    for sheet_name in xls.sheet_names:
        if sheet_name.lower() == 'virtual':
            target_sheet = sheet_name
            break
    # 可选:未匹配到对应工作表时跳过当前文件,避免程序报错
    if not target_sheet:
        print(f"文件{filename}未找到virtual对应工作表,已跳过")
        continue
    # 用匹配到的实际表名读取数据
    df = pd.read_excel(filename, sheet_name = target_sheet, index_col=None, usecols= cols)
    li3.append(df)
frame3 = pd.concat(li3, axis=0, ignore_index=True)
frame3 = frame3.iloc[:-1 , :]
frame3 = frame3[(frame3.IvaPagadoOriginal != 0)]
frame3 = frame3.dropna(subset=['InvoiceNumber'])                
frame3['Vat Returns Adjustment Category'] = 'Total foreign suppliers' 
frame3['Date'] = pd.to_datetime(frame3['PeriodoEdo'])
frame3['Period Name'] = frame3['Date'].dt.strftime('%b-%y')

说明

  • 该方案仅会额外读取Excel的工作表元信息,不会提前加载全表数据,对性能几乎无影响
  • 新增的跳过逻辑可根据实际需求调整,比如需要严格校验文件完整性时可替换为抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:01