关于python3中利用os和pandas来合并当前目录下所有excel文件的方法

2017/07/27 Python

关于python3中利用os和pandas来合并当前目录下所有excel文件的方法

前面写了一篇关于如何读取当前路径下所有文件路径的方法,今天继续延伸做个合并excel的方法笔记

受不了网上那些xlrd、xlsxwriter或者xlwt这三个模块的复杂写法,我还是发挥自己又懒又急躁的“特长”,把注意力转移到pandas这个模块上来了

应该算是很容易实现的,同时可以利用pandas的数据处理自动化特点来消除很多数据格式不规范的情况,比如文本型的123,自动转为数值型123。另外这个方法可处理各种数据列数量不一致、数据缺失等情况,案例数据如下图: text

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

声明:作者原创文章,未经同意严禁转载

Show Disqus Comments

Search

    欢迎关注我的微信公众号

    闷骚的程序员

    Table of Contents