一、概述
其实Excel合并这个需求,应该是一个极为普遍的需求了。今天我们就利用Python完成“Excel合并(拆分)” 操作,具体如下:
① 将多个Excel表,合并到一个Excel中(每个Excel中只有一个sheet表);
② 将多个Excel表,合并到一个Excel中(每个Excel中不只一个sheet表);
③ 将一个Excel表中的多个sheet表合并,并保存到同一个excel;
④ 将一个Excel表,按某一列拆分成多张表;
二、知识点讲解
其实完成这些操作,涉及到了太多的知识点,因此在讲述上述这个知识点以前,我们要带大家复习一些常用的知识点。
① os模块常用知识点讲解;
② pandas模块常用知识点讲解;
③ xlsxwriter模块常用知识点讲解;
④ xlrd常用知识点讲解;
1. os模块知识点讲解
对于os模块,我们主要讲述os.walk()、os.path.join()等知识点。
1.1 os.walk()
对于这个知识点,我们需要说明以下几点:
os.walk()的返回值是一个生成器(generator),我们需要循环遍历它,来获取其中的内容;
每次遍历,返回的都是一个三元组(path, dirs, files);
path:返回的是当前正在遍历的这个文件夹的,本身路径地址;
dirs:返回的是该文件夹中所有目录的名字(不包含子目录),有多少个都以“列表”返回;
files:返回的是该文件夹中所有的文件(不包含子目录下的文件),有多少个都以“列表”返回;
如果说,有一个如图所示的文件夹。
利用下方的代码,我们可以得到什么结果呢?
pwd = "G:\\a" print(os.walk(pwd)) for i in os.walk(pwd): print(i) for path,dirs,files in os.walk(pwd): print(files)```
结果如下:
<generator object walk at 0x0000029BB5AEAB88> ('G:\\a', [], ['aa.txt', 'bb.xlsx', 'cc.txt', 'dd.docx']) ['aa.txt', 'bb.xlsx', 'cc.txt', 'dd.docx']
1.2 os.path.join()
这个函数,主要用于将多个路径组合后返回,超级简单,就不做过多阐述。
path1 = 'G:\\a' path2 = 'aa.txt' print(os.path.join(path1,path2))
结果如下:
G:\a\aa.txt
2. pandas模块知识点讲解
由于是需要利用Pandas进行Excel的合并,因此我们要学会,如何利用Pandas进行数据的纵向合并。
我们先创建2个数据框(DataFrame):
import numpy as np xx = np.arange(15).reshape(5,3) yy = np.arange(1,16).reshape(5,3) xx = pd.DataFrame(xx,columns=["语文","数学","外语"]) yy = pd.DataFrame(yy,columns=["语文","数学","外语"]) print(xx) print(yy)
效果如下:
接着,可以利用Pandas中的concat()函数,完成纵向拼接的操作。
pd.concat(list)中【默认axis=0】默认的是数据的纵向合并;
pd.concat(list)括号中传入的是一个列表;
ignore_list=True表示忽略原有索引,重新生成一组新的索引;
或者直接可以写成z = pd.concat([xx,yy],ignore_list=True);
concat_list = [] concat_list.append(xx) concat_list.append(yy) z = pd.concat(concat_list,ignore_list=True) print(z)
效果如下: