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

  

posted @ 2021-06-10 16:51  Sakura_柏  阅读(815)  评论(0编辑  收藏  举报