如何使用Python将多个Excel预算文件合并汇总(非追加)为单个文件?
预算汇总代码修正方案
原有代码存在3个核心问题:
- concat操作放在for循环外,仅能拼接最后一个读取的文件数据
- 未指定读取
Budget工作表,后续多工作表场景会读取默认的第一个工作表 - 缺少按总账科目分组求和的逻辑,仅完成数据拼接未做汇总计算
可直接运行的修正代码
# 导入依赖库 import pandas as pd import glob # 配置参数 file_path = '*.xlsx' # 可替换为实际Excel文件存放路径 sheet_name = 'Budget' # 固定读取预算工作表 skip_rows = 11 # 表头跳过行数,可根据实际数据调整 use_cols = 'D:P' # 读取列范围,可根据实际数据调整 max_rows = 147 # 读取数据行数,可根据实际数据调整 # 获取所有待处理Excel文件 files = glob.glob(file_path) df_list = [] # 循环读取所有文件的预算表数据 for file in files: df = pd.read_excel( file, sheet_name=sheet_name, index_col=None, skiprows=skip_rows, nrows=max_rows, usecols=use_cols ) # 重命名列,确保第一列为总账科目,后续为1-12月,可根据实际列名调整 df.columns = ['总账科目描述', '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] df_list.append(df) # 合并所有文件数据 combined_df = pd.concat(df_list, ignore_index=True) # 按总账科目分组,对各月份金额求和 summary_df = combined_df.groupby('总账科目描述', as_index=False).sum(numeric_only=True) # 输出汇总结果 summary_df.to_excel('年度预算汇总结果.xlsx', index=False)
补充说明
- 若实际读取的列顺序和上述列名定义不符,调整
df.columns的字段顺序即可 - 后续无需删除其他工作表,代码中已经指定了
sheet_name='Budget',会自动过滤其他工作表 - 若有科目名称不统一的情况,可在分组前增加字段清洗逻辑处理异常值
内容的提问来源于stack exchange,提问作者mahai217
相关产品推荐
相关产品推荐

