如何用Python读取并合并多个Excel文件中的指定行至单个文件
Excel文件汇总解决方案
需求说明
我有多个Excel文件,每个文件的Summary工作表中存在一行A列值为Orange的数据,需要将所有文件的这一行数据提取出来,合并成一个新的Excel文件:每个源文件的对应数据作为新文件的一列,列名使用源文件所在的文件夹名称。
原代码问题分析
你提供的代码存在以下几个关键问题:
- 初始
df_report仅读取第一行,未正确筛选Orange对应的行 - 直接通过索引
df_report[i]添加列的方式不符合pandas语法 - 未正确提取目标行,错误地操作了行索引而非按值筛选
- 缺少
PATH和result_file_path的定义,会导致运行报错
修正后的代码
import os import pandas as pd def excel_summary_gen(): # 配置参数 extension = '.xlsx' PATH = '你的目标目录路径' # 替换成你要遍历的根目录 result_file_path = '汇总结果.xlsx' # 汇总文件保存路径 # 初始化汇总DataFrame df_report = pd.DataFrame() # 遍历目录下所有符合条件的文件 for root, dirs_list, files_list in os.walk(PATH): for file_name in files_list: # 筛选含flatReport的xlsx文件 if os.path.splitext(file_name)[-1] == extension and 'flatReport' in file_name: file_path = os.path.join(root, file_name) folder_name = os.path.basename(root) # 获取文件所在文件夹名称 # 读取Summary工作表,筛选A列值为Orange的行 df_r = pd.read_excel(file_path, sheet_name='Summary') # 找到A列(取工作表第一列,若有明确列名可替换为实际列名) target_row = df_r[df_r.iloc[:, 0] == 'Orange'] # 如果找到目标行,转置为列并添加到汇总表 if not target_row.empty: # 转置行成为列,设置列名为文件夹名称 target_col = target_row.T target_col.columns = [folder_name] # 合并到汇总表 df_report = pd.concat([df_report, target_col], axis=1) # 保存汇总文件 df_report.to_excel(result_file_path, index=True) print("汇总完成,文件已保存至:", result_file_path) # 调用函数 excel_summary_gen()
注意事项
- 替换代码中的
PATH为你实际要遍历的根目录路径 - 如果你的Excel文件中A列有明确列名(比如不是
Unnamed:0),可以把df_r.iloc[:, 0]替换成实际列名,例如df_r['类别'] == 'Orange' - 确保所有目标文件的
Summary工作表中都存在A列值为Orange的行,否则该文件的数据会被跳过
内容的提问来源于stack exchange,提问作者user2077648
相关产品推荐
相关产品推荐

