之前写过用普通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)