关于python3中利用os和pandas来合并当前目录下所有excel文件的方法
前面写了一篇关于如何读取当前路径下所有文件路径的方法,今天继续延伸做个合并excel的方法笔记
受不了网上那些xlrd、xlsxwriter或者xlwt这三个模块的复杂写法,我还是发挥自己又懒又急躁的“特长”,把注意力转移到pandas这个模块上来了
应该算是很容易实现的,同时可以利用pandas的数据处理自动化特点来消除很多数据格式不规范的情况,比如文本型的123,自动转为数值型123。另外这个方法可处理各种数据列数量不一致、数据缺失等情况,案例数据如下图:
1、引入模块
import pandas as pd
import os
import x
2、取出指定目录下的全部excel文件路径
path = r'C:\Users\JAY23\Desktop\测试'
dirlist = []
for dirpath,dirname,filename in os.walk(path):
for i in filename:
dirlist.append(os.path.join(dirpath,i))
dirlist
['C:\\Users\\JAY23\\Desktop\\测试\\0-1.xlsx',
'C:\\Users\\JAY23\\Desktop\\测试\\0-2.xlsx',
'C:\\Users\\JAY23\\Desktop\\测试\\文件夹1\\1-1.xlsx',
'C:\\Users\\JAY23\\Desktop\\测试\\文件夹1\\1-2.xlsx',
'C:\\Users\\JAY23\\Desktop\\测试\\文件夹2\\2-1.xlsx',
'C:\\Users\\JAY23\\Desktop\\测试\\文件夹2\\2-2.xlsx']
3、创建一个df对象列表,并进行合并操作
dflist = []
for i in dirlist:
dflist.append(pd.read_excel(i))
4、利用pd.concat函数来合并excel,涉及excel数据列数量不一致的、有空值等情况均没有影响合并效果
mydf = pd.concat(dflist)
5、导出合并后的excel,因为此方法合并后index存在重复,可选择去除index
mydf.to_excel('mydf.xlsx',index=None)
6、查看合并后的excel文件
pd.read_excel('mydf.xlsx')
体重 | 姓名 | 年龄 | 性别 | 身高 | |
---|---|---|---|---|---|
0 | NaN | 张三 | 20.0 | 男 | NaN |
1 | NaN | 李四 | 25.0 | NaN | NaN |
2 | NaN | 王五 | NaN | NaN | NaN |
3 | NaN | 赵六 | 30.0 | 女 | NaN |
4 | 80.0 | 杨子 | 22.0 | 男 | NaN |
5 | NaN | 李子 | 35.0 | 女 | NaN |
7、可查看合并后数据类型情况
aa = pd.read_excel('mydf.xlsx')
aa.dtypes
体重 float64
姓名 object
年龄 float64
性别 object
身高 float64
dtype: object
声明:作者原创文章,未经同意严禁转载