日常工作中,每个月都会遇到那么个固定的工作,将业务方同事整理的数据导入GP数据库中的某张表中;听起来是很简单的活呢!
但每次业务MM总会发来一个文件夹,里面有三四十个Excel文件(.xlsx格式,且字段名称相同)。据业务MM说,分那么多文件是为了方便对账,所以不能合放在一起。
作为一个小菜鸟,拿到这个数据,我先想到的做法是:
(1)新建一个excel文件A;
(2)将这三、四十个文件数据分别复制到A中。
(3)将文件A另存为csv文件;
(4)利用copy指令将数据导入GP数据库中的表。
一个文件一个文件的导入或者复制再导入,确实是重复劳动、浪费时间;几次操作下来,枯燥又心累~
心里想一定得找到新的方法,提高效率,同时解放自己。刚好在学习python,那就用python试试把这些数据合并在一起吧!经过在网上搜索的资料,拼拼凑凑,,终于弄好了一个自动合并数据的小脚本。
思路如下:
(1)用python读取固定文件夹下所有的excel(.xlsx)文件
(2)合并这些文件数据,并将结果存在同一个文件中
脚本如下:
#导入需要用到的模块
import os
import pandas as pd
import numpy as np
#需要处理的文件夹所在的路径
dir = "e:\\test"
#新建列表,存放文件名(可以忽略,但是为了做的过程能心里有数,先放上)
filename_excel = []
#新建列表,存放每个文件数据框(每一个excel读取后存放在数据框)
frames = []
#循环读取文件夹下的文件名
for root, dirs, files in os.walk(dir):
for file in files:
filename_excel.append(os.path.join(root,file))
frames.append(df)
#打印文件名
print(filename_excel)
#合并所有数据
result = pd.concat(frames)
#查看合并后的数据
result.head()
result.shape
#将合并后的数据放在E盘的ceshi.csv文件中,这里可以根据实际需求存放文件格式
result.to_csv('e:\\ceshi.csv, sep=',',index = False)
稍微处理一下合并后的文件,例如删除标题行等(为什么这一步在前面没做,是因为每个文件的标题行一致,如果用skiprows=[0]会导致每个文件都少了一行)。最后用copy语句导入GP数据库表。
领取专属 10元无门槛券
私享最新 技术干货