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)



相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页