数据分析(一) - 将分散在 不同文件夹中的 多张Excel表信息 汇总到一张Excel表 中(附代码,详细注释)

it2026-01-07  8

文章目录

场景一、文件目录结构二、实现方法1. Excel2. Python/Pandas 总结


场景

办公室老师给了我一个压缩包,解压后里面有很多个文件夹,每个文件夹里面有一张Excel表格,每个表格里只有一行信息,我需要把多个文件夹里的多张Excel表的信息汇总到一张Excel表里面,该如何做呢?

一、文件目录结构

卷序列号为 F227-F9A4 C:. └─国家励志 ├─国家励志奖学金申请 xxx │ └─国家励志奖学金申请 xxx │ 国家励志奖学金申请汇总表.xls │ 表2.2019-2020学年国家励志奖学金申请表.doc │ ├─国家励志奖学金申请 xx │ 国家励志奖学金申请汇总表.xlsx │ 英才实验学院2019-2020学年国家奖学金、国家励志奖学金评选的通知.docx │ ├─国家励志奖学金申请 xxx │ 国家励志奖学金申请汇总表.xls │ 表2.2019-2020学年国家励志奖学金申请表.doc │

如上图,“国家励志”文件夹下面有不同学生的文件夹,每位学生的文件夹中有两份文件,一份是申请表(.doc), 一份是我们要用到汇总表(.xls/.xlsx)。下面我们介绍两种满足需求的做法:1. 直接在Excel中做 2. 用Python编程做。

二、实现方法

1. Excel

待更

2. Python/Pandas

之所以选用pandas,是因为pandas.concat()函数来做合并这件事是非常合适的: 如上图,使用pandas.concat(),可以直接将三个不同的dataframe按表头合并。 而且,利用python的os库,我们可以很轻松地提取出.xls/.xlsx文件,避开了其他不相关的文件(.doc)。 最终写成代码如下:

# 导入必要的库 import pandas as pd from pandas import DataFrame import os # 当前目录作为base目录 base = "./" # 存放要处理的表格文件 file_list = [] # 存放读到的dataframes dfs = [] # os.walk遍历base目录, root为当前所在根目录,ds为当前目录名,fs为当前非目录文件 for root, ds, fs in os.walk(base): for f in fs: if f.endswith('.xls') or f.endswith('xlsx'): fp = os.path.join(root,f) df = pd.read_excel(fp,header=1) dfs.append(df) df = pd.concat(dfs,axis=0,sort=False) # axis=0表示按行拼接,sort=False表示列序按原始顺序排 # 将合并后的dataframe单元格式转成字符串,避免转excel的时候数字变成科学计数法 df = df.astype(str) df.to_excel('../result.xls',index=False)

总结

当我们需要合并多个excel表格到一个excel表格,而且多个excel表格又分散在不同的目录中时,可以考虑用python/pandas高效地完成

最新回复(0)