多文件夹下Excel指定列的提取合并

一、前言


大家好,我是崔艳飞,工作中经常遇到,从多个文件夹下的Excel中,提取指定列,再合并成新的Excel。几个文件夹还能应付,但要是有成百上千个文件夹,你就要哭了,本文针对此问题,实现Python自动处理。

二、导入库

只需导入OS库,进行文件查询,和pandas库进行数据处理。

import pandas as pd
import os

三、编写代码

1. 定义要提取Excel的总文件夹路径

输入要提取的文件夹、定义要提取的列、指定要保存输出结果的文件位置

    #要提取EXCEL的总文件夹路径
    path="D:/a/"
    # 定义要提取的列名
    key=['A','B']
    path2 = os.listdir(path)
    #定义输出合并结果文件名
    bb = path + 'result.xlsx'
    writer = pd.ExcelWriter(bb,engine='openpyxl')

2. 获取所有待提取的Excel文件List

    file_names=[]
    for p in path2:
        if '.xl' in p:
            continue
        path3=path+p+"/"
        #获取文件夹下所有EXCEL名
        xlsx_names = [x for x in os.listdir(path3) if x.endswith(".xlsx")]
        for f in xlsx_names:
            file_names.append(path3+f)

3. 循环读取所有Excel,提取指定列进行合并

    df = None
    for xlsx_name in file_names:
            df1 = pd.read_excel(xlsx_name, sheet_name=0, index_col=None,header=0)
            _df=df1.loc[:, key]
            if df is None:
                df = _df
            else:
                df = pd.concat([df, _df], ignore_index=True)
            print(xlsx_name + "  保存成功!共%d个,第%d个。" % (len(file_names), num))

四、执行效果

所有待提取合并的文件夹如下图:

执行代码成功:

保存结果文件:

提取结果文件内容如下:

五、总结

本文介绍了利用Pandas对批量Excel进行提取合并的有关操作。通过代码的演示、运行效果的展示,对Pandas的强大功能有了进一步地了解。有你真好,我爱Python。

相关文章

Python3 列表list合并的4种方法

下面是列表合并的4种方法,其中的代码都在Python3下测试通过,在Python2下运行应该也没问题,时间关系就没测试。方法1: 直接使用"+"号合并列表aList = [1,2,3]...

python list列表拼接合并的三种方法

python 列表list拼接合并的三种方法使用“+”运算符,直接将所要拼接的列表list进行相加,比如[1]+[2],该方法并不修改原列表,而是以一个新的列表来返回;使用python内置的列表方法e...

用python实现两个链表的合并和排序

1、需求:已知有两个链表a和b,每个链表中的节点包括学号和成绩,要求把两个链表合并,按学号升序排序。2、输入和输出:请分别输入链表a、b元素的数量: 2 3**********************...

10行python代码系列——合并多个PDF

介绍这是一个使用Python的10行代码将多个PDF文件合并为一个PDF的应用程序。只需将源代码与PDF文件放置在同一位置,运行该代码,所有的单个PDF文件将被合并成一个新的大PDF文件。程序的功能:...

合并excel表格(使用python)

上次介绍了用Power Query合并excel表格(合并excel表格(使用Power Query)),今天,介绍用python合并excel表格。准备测试数据准备3个excel工作簿:明细1.xl...

三种常用方法合并 Python 字典,你学会了吗?

在使用 Python 字典时,你有时需要将多个字典合并成一个,以便后续处理。本教程将介绍三种常见的 Python 字典合并方法。我们将重点学习以下三种方式:使用 update() 方法字典解包并集运算...