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

遍历Excel多工作表,筛选指定数据并合并为带工作表名列的DataFrame

解决方案

步骤说明

  • 先读取Excel文件并获取所有工作表名称
  • 遍历每个工作表,按规则筛选数据:保留第一行、finish标识行及之后的所有行
  • 为每个工作表的结果添加工作表名称列
  • 合并所有工作表的结果为单个DataFrame

完整代码

import pandas as pd

# 读取Excel文件,获取所有工作表名称
excel_file = pd.ExcelFile('excel1_all_data.xlsx')
sheet_names = excel_file.sheet_names

# 初始化空列表存储每个工作表的处理结果
all_data = []

for sheet_name in sheet_names:
    # 读取当前工作表的全部数据
    df = excel_file.parse(sheet_name)
    
    # 找到首列中值为'finish'的第一个行索引
    finish_idx = df[df.iloc[:, 0] == 'finish'].index[0]
    
    # 筛选数据:第一行 + finish行及之后的所有行
    filtered_df = pd.concat([df.iloc[[0]], df.loc[finish_idx:]])
    
    # 添加工作表名称列
    filtered_df['工作表名称'] = sheet_name
    
    # 将处理后的DataFrame加入列表
    all_data.append(filtered_df)

# 合并所有工作表的数据
final_df = pd.concat(all_data, ignore_index=True)

# 可选:保存结果到新Excel
final_df.to_excel('合并后数据.xlsx', index=False)

关键细节说明

  • 使用pd.ExcelFile而非直接pd.read_excel,可以避免重复打开Excel文件,提升处理50个工作表的效率
  • 筛选逻辑改为pd.concat([df.iloc[[0]], df.loc[finish_idx:]]),确保保留第一行、finish标识行及之后的所有数据,不会丢失标识
  • 遍历过程中给每个结果添加工作表名称列,方便后续溯源
  • 最后用pd.concat合并所有结果,ignore_index=True重置合并后的索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:15:37