多文件夾下Excel指定列的提取合并
共 3864字,需瀏覽 8分鐘
·
2024-04-20 09:00
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
一、前言
大家好,我是崔艷飛,工作中經(jīng)常遇到,從多個(gè)文件夾下的Excel中,提取指定列,再合并成新的Excel。幾個(gè)文件夾還能應(yīng)付,但要是有成百上千個(gè)文件夾,你就要哭了,本文針對(duì)此問題,實(shí)現(xiàn)Python自動(dòng)處理。
二、導(dǎo)入庫(kù)
只需導(dǎo)入OS庫(kù),進(jìn)行文件查詢,和pandas庫(kù)進(jìn)行數(shù)據(jù)處理。
import pandas as pd
import os
三、編寫代碼
1. 定義要提取Excel的總文件夾路徑
輸入要提取的文件夾、定義要提取的列、指定要保存輸出結(jié)果的文件位置
#要提取EXCEL的總文件夾路徑
path="D:/a/"
# 定義要提取的列名
key=['A','B']
path2 = os.listdir(path)
#定義輸出合并結(jié)果文件名
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. 循環(huán)讀取所有Excel,提取指定列進(jìn)行合并
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個(gè),第%d個(gè)。" % (len(file_names), num))
四、執(zhí)行效果
所有待提取合并的文件夾如下圖:
執(zhí)行代碼成功:
保存結(jié)果文件:
提取結(jié)果文件內(nèi)容如下:
五、總結(jié)
本文介紹了利用Pandas對(duì)批量Excel進(jìn)行提取合并的有關(guān)操作。通過代碼的演示、運(yùn)行效果的展示,對(duì)Pandas的強(qiáng)大功能有了進(jìn)一步地了解。有你真好,我愛Python。
大家在學(xué)習(xí)過程中如果有遇到問題,歡迎隨時(shí)聯(lián)系我解決(我的微信:pdcfighting),應(yīng)粉絲要求,我創(chuàng)建了一些高質(zhì)量的Python付費(fèi)學(xué)習(xí)交流群和付費(fèi)接單群,歡迎大家加入我的Python學(xué)習(xí)交流群和接單群!
小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
