循环目录文件处理Excel相同表格,合并成一张长表

循环目录文件处理Excel相同表格,合并成一张长表

# -*- coding: utf-8 -*-

"""

循环目录文件处理Excel相同表格,合并成一张长表

"""

import os,re

import pandas as pd

import time

def readExcelFile(fname,col_not_null,sheet_name,skiprows):

    """

    单个excel文件处理

    """

    table = pd.read_excel(fname,sheet_name,skiprows)    

    ##数据处理

    #去掉空格

    df = table

    df.columns = [i.replace(' ','')  for i in df.columns]

    # 删除字段

    df = df[df[col_not_null] != None]

    df = df[df[col_not_null].notnull()]

    return df

def handle_dir_excel(dir_path,col_not_null,sheet_name,skiprows):

    """

    目录处理

    """

    dir_path = "C:\\Users\\HP\\Desktop\\支付宝目录"

    df = pd.DataFrame([])

    for root,dirs,files in os.walk(dir_path):##文件夹的路径

        if files: ##判断是否有文件

            for file_name in files: ##循环文件的名称

                if '.xls' in file_name: #判定文件是否以xlsx结尾,是的就继续,不是的就退出了;

                    fname = os.path.join(root,file_name)

                    print('正在处理的文件是---%s'%(fname))

                    try:

                        data = readExcelFile(fname,col_not_null,sheet_name,skiprows)

                        df_tmp = pd.DataFrame(data)

                        df = pd.concat([df,df_tmp], ignore_index=True, sort=True) ## 数据合并

                        print('文件的长宽是---',df.shape)

                    except:

                        print('Fail---读取文件处理数据失败')

                else:

                    print('warning:非.xls文件不读取处理')

    return df

def write_xlsx(df,out_filename,out_cols):

    """

    将数据集保存到本地

    """

    print('保存的文件位置是---',out_filename)

    try:

        writer = pd.ExcelWriter(out_filename, engine='xlsxwriter')

        df.to_excel(writer,'合集-Sheet1',index=False)

    except:

        print('保存失败')

    try:

        ##限定部分列输出

        df_v1 =df[out_cols]

        df_v1.to_excel(writer,'部分列-Sheet2',index=False)

    except:

        print('限定部分列输出失败')

    writer.save()

    return None

if __name__ == "__main__":

    start_time = time.time() # 开始时间

    """

    基础配置信息

    """

    dir_path = "C:\\Users\\HP\\Desktop\\支付宝目录" #文件所在的目录

    ## 以下是针对单个excel文件设置的

    sheet_name = 0  #   sheet_name 设置为数字0,表示默认选择第一个sheet表格,如果是字符串,表示的是sheet_name的名字

    skiprows=4 #省略指定行数的数据

    col_not_null = '交易创建时间' ##选择一个字段,这个字段必须有值,用于剔除尾部数据 

    ## 输出信息

    out_filename =  '合集v1.xlsx' ##输出的文件名字

    out_filename = dir_path +'\\'+ out_filename

    out_cols =['交易创建时间','金额(元)','商品名称','资金状态'] ##输出限定部分列

    """

    目录excel读取处理

    """

    df = handle_dir_excel(dir_path,col_not_null,sheet_name,skiprows)

    """

    保存数据

    """

    write_xlsx(df,out_filename,out_cols)

    end_time = time.time() #结束时间

    print("程序耗时%f秒." % (end_time - start_time))


Excel的基础入门操作,协助你掌握从零基础入门到高级技巧应用(全7集)   https://306t.com/file/686368-477371689


更多资源下载地址:https://z701.com/f/686368-485346643-6740b7

(访问密码:4939)

Excel  Excel教程  Excel技巧 Excel表格  Excel表格制作  excel函数公式大全

各位网友,小编在网上购买的Excel教程,现在免费分享给大家,希望对您有所帮助

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容