pandas合并文件夹下带有多个sheet的xlxs文件并写出csv文件

之前写过用普通python库来合并文件,现在加强读写速度用pandas库来执行。

如果只读一个多sheet的excel文件,见代码1

代码1:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2018/5/31 0031 15:29
# @Author  : 一梦南柯
# @File    : data_process1.py


'''
使用pandas读取.xlxs的excel多个sheet文件,并且写出csv格式的excel文件
'''
import pandas as pd
def excel_add(file_path):
    xls_file=pd.ExcelFile(file_path)
    # 显示出读入excel文件中各个sheet表的名字
    sheet_names = xls_file.sheet_names
    df_all = pd.DataFrame()
    for i in sheet_names:
        # skiprows=0代表读取跳过的行数为0行,不写代表不跳过标题
        df = pd.read_excel(file_path, sheetname=i, skiprows=2, index=False, encoding='utf8')
        df_all.append(df)
    #第一个参数是说把dataframe写入到D盘下的TEST2.csv文件中,参数sep表示字段之间用’, ’分隔,header表示是否需要头部,index表示是否需要行号。
    df_all.to_csv('D:\\TEST2.csv',sep=',', header=True, index=False)


if __name__ == '__main__':
    file_path = 'D:\\5.3\\test.xlsx'
    excel_add(file_path)


如果只读文件夹下所有多sheet的excel文件,见代码2

代码2:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2018/5/31 0031 15:29
# @Author  : 一梦南柯
# @File    : data_process1.py


'''
使用pandas读取文件夹下全部带有多个sheet的.xlxs文件,并且写出csv格式的excel文件
例子:若文件夹中有2个文件,则第一个for循环后,输出为:
D:\5.3\test
[]
['test.xlsx', 'test2.xlsx']
'''
import pandas as pd
import os
import time
def excel_add(file_path):
    time1 = time.time()
    InputDir = file_path
    rootdir = InputDir
    df_all = pd.DataFrame()
    for parent, dirnames, filenames in os.walk(rootdir):
        for filename in filenames:
            xls_file=pd.ExcelFile(os.path.join(parent, filename))
            # 显示出读入excel文件中各个sheet表的名字
            sheet_names = xls_file.sheet_names
            for i in sheet_names:
                # skiprows=0代表读取跳过的行数第0行,不写代表不跳过标题
                df = pd.read_excel(os.path.join(parent, filename), sheetname=i, skiprows=2, index=False, encoding='utf8')
                df_all = df_all.append(df)
  #第一个参数是说把dataframe写入到D盘下的TEST2.csv文件中,参数sep表示字段之间用’, ’分隔,header表示是否需要头部,index表示是否需要行号。
    df_all.to_csv('D:\\T2013-2018plan4_1.csv', sep=',', header=True, index=False)
    time2 = time.time()
    time3 = time2-time1
    print(time3)

if __name__ == '__main__':
    #file_path = 'D:\\5.3\\test'
    file_path = 'D:\\5.21\\实验数据test\\plan'
    excel_add(file_path)



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值