python 使用pandas 处理 EXCEL 合并
工作里面有些很恶心的东西。就是合并excel, 所以为了解放自己,开始执行程序操作。
这次主要是简单的,一次性操作。 后续跟进。
1 遍历文件夹
2 读取添加至df
3 输出至本地文件夹。
里面遇到的困难,大多都是一些读取,存储的操作,本质上,这个行文逻辑没有什么太多可讲的。
还是学习下pandas ,减轻工作量趴。 受不了
# _*_coding:utf-8 _*_ import pandas as pd import numpy as np import os import time # 主要是简单合并excel, 太多了。麻烦的很,不想搞 。 # 地址 # 修改一下,换一个新的保存地址。最好加上时间 path = r"C:\Users\1\Desktop\工作\202106\test" path1 = r"C:\Users\1\Desktop\工作\202106\save" # 当前时间格式,很有用。 tim = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) # print(path + '\\' + tim + '.xlsx') # print(a) filenames = os.listdir(path) df = pd.DataFrame() # 遍历需要文件夹所有文件 for i in filenames: # print (path + '\\'+ i ) -- 验证地址 data = pd.read_excel(path + '\\' + i) df = df.append(data) adres = path1 + '\\' + tim + '.xlsx' print(adres) df.to_excel(adres)
修改版本: 分开写,会比较好维护些。处理就处理,保存就保存。虽然很简单。没有必要这样做,但是这样写的好处是培养思维。
# _*_coding:utf-8 _*_ import pandas as pd import numpy as np import os import time # 主要是简单合并excel, 太多了。麻烦的很,不想搞 。 # 地址 # 修改一下,换一个新的保存地址。最好加上时间 class yuchuli: # 初始化数据 def __init__(self): self.pd = pd # 开始地址 self.path = r"C:\Users\1\Desktop\工作\202106\test" # 输出保存地址 self.save = r"C:\Users\1\Desktop\工作\202106\save" # 时间格式 self.tim = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) # 数据合并 def get_data(self): filenames = os.listdir(self.path) df = self.pd.DataFrame() for i in filenames: # print (path + '\\'+ i ) -- 验证地址 data = pd.read_excel(self.path + '\\' + i) df = df.append(data) return df # 数据处理 def deal_data(self): df = self.get_data() str = 'h' # 去除重复 df1 = df.drop_duplicates() # 增加筛选 特定文档。 不想筛选就注释掉。 if '营业状态' in df.columns: str = '营业状态' df1 = df1[df1['营业状态'].isin(['正常营业', '未上线', '歇业'])] a = 1 return df1, str # 保存数据 def save_data(self): # 这样可以少跑一次速度更快。获取数据存起来。 data = self.deal_data() # 数组 data1 = data[0] # 营业状态 str = data[1] # str = 'h' # if '营业状态' in data.columns: # str = '筛选过后' addr = self.save + '\\' + str + self.tim + '.xlsx' print(addr) data1.to_excel(addr) if __name__ == '__main__': yuchuli().save_data() a = 1