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 location,i in enumerate(sheet_names):
        if location == 0:
            # skiprows=[0]代表读取跳过的行数第0行,不写代表不跳过标题
            df = pd.read_excel(file_path, sheet_name=i, skiprows=1, index=False, encoding='utf8')
            df_all.append(df)
        else:
            df = pd.read_excel(file_path, sheet_name=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:\\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
def excel_add(file_path):
    InputDir = file_path
    rootdir = InputDir
    df_all = pd.DataFrame()
    for parent, dirnames, filenames in os.walk(rootdir):
        for loc,filename in enumerate(filenames):
            xls_file=pd.ExcelFile(os.path.join(parent, filename))
            # 显示出读入excel文件中各个sheet表的名字
            sheet_names = xls_file.sheet_names
            if loc == 0:
                for location,i in enumerate(sheet_names):
                    #若第一张表,则保存表头
                    if location == 0:
                        # skiprows=[0]代表读取跳过的行数第0行,不写代表不跳过标题
                        df = pd.read_excel(os.path.join(parent, filename), sheet_name=i, skiprows=1, index=False, encoding='utf8')
                        df_all.append(df)
                    else:
                        df = pd.read_excel(os.path.join(parent, filename), sheet_name=i, skiprows=2, index=False, encoding='utf8')
                        df_all.append(df)
            else:
                for location, i in enumerate(sheet_names):
                    df = pd.read_excel(os.path.join(parent, filename), sheet_name=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:\\TEST9.csv',sep=',', header=True, index=False)

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

猜你喜欢

转载自blog.csdn.net/qq_38150441/article/details/80529888
今日推荐