遍历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
相关产品推荐
相关产品推荐

