色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 合并多個(gè)excel中同名的sheet

瀏覽:6日期:2022-06-29 13:15:03

大家好~ 老Amy來(lái)啦!已經(jīng)n久沒(méi)有給大家輸出關(guān)于辦公自動(dòng)化的文章了…為什么呢?羅列原因:

太忙!(被領(lǐng)導(dǎo)“壓榨”) 太忙!(沒(méi)有額外的精力揣測(cè)大家辦公的需求) 太忙!(持續(xù)吃瓜中)

然鵝,一位朋友的困惑成為了我這種“麻木狀態(tài)”的終結(jié)者,他提出需求如下:

python 合并多個(gè)excel中同名的sheet

想不斷嘗試的老Amy,開(kāi)啟了思考模式:“我要怎么實(shí)現(xiàn)這個(gè)需求呢?”。

不用著急,首先我們來(lái)分析數(shù)據(jù)本身。

分析數(shù)據(jù)特征如下:

數(shù)據(jù)所在路徑 C:UserslogicDesktopmytestfile_dir

python 合并多個(gè)excel中同名的sheet

data01.xlsx 數(shù)據(jù)如下:

python 合并多個(gè)excel中同名的sheet

data02.xlsx 數(shù)據(jù)如下:

python 合并多個(gè)excel中同名的sheet

由上可得信息如下:

所有 xlsx 工作簿都在同一個(gè)文件夾下 data01.xlsx 與 data02.xlsx 中 sheet 名相同的進(jìn)行合并。也就是202001與202001合并,其它同理。

我們需要合并數(shù)據(jù),首先需要讀取到每個(gè)工作簿下每個(gè)工作表的數(shù)據(jù),實(shí)現(xiàn)流程如下:

獲取文件夾下所有工作簿名 拼接為絕對(duì)路徑 讀取所有表格數(shù)據(jù) 保存到空列表中

那要通過(guò)代碼完成上面的連環(huán)操作,我們就需要使用到 python 中的內(nèi)置模塊 os 模塊——與操作系統(tǒng)進(jìn)行交互的模塊,來(lái)獲取文件夾下所有工作簿名,代碼如下:

import os # 導(dǎo)入模塊# 列出 C:UserslogicDesktopmytestfile_dir 下所有文件名file_name_li = os.listdir(r'C:UserslogicDesktopmytestfile_dir')file_name_li---------------------------------------------------------------------[’data01.xlsx’, ’data02.xlsx’]

但此時(shí),無(wú)法只通過(guò)文件名去系統(tǒng)中找到對(duì)應(yīng)的文件,所以我們需要更準(zhǔn)確一點(diǎn)兒的地址——絕對(duì)路徑,所以現(xiàn)在我們需要拼接每個(gè)文件的絕對(duì)路徑。代碼如下:

# 遍歷出每個(gè)文件名for file_name in file_name_li: # 將文件夾絕對(duì)路徑 與 文件名進(jìn)行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) print(file_path_li) --------------------------------------------------------------------C:UserslogicDesktopmytestfile_dirdata01.xlsxC:UserslogicDesktopmytestfile_dirdata02.xlsx

有了文件的絕對(duì)路徑后,我們就可以來(lái)讀取文件中的數(shù)據(jù),那就要使用到法寶 pandas 了。首先大家注意,pandas 并不是 python 的內(nèi)置模塊,而是需要我們?nèi)グ惭b的。然后使用 pandas 的 read_excel() 方法讀取數(shù)據(jù),但是需要注意的是,此時(shí)我們需要讀取的是工作簿下的所有工作表,所以需要指定 sheet_name 為 None,否則會(huì)默認(rèn)讀取第一個(gè)工作表。代碼如下:

# 遍歷出每個(gè)文件名for file_name in file_name_li: # 將文件夾絕對(duì)路徑 與 文件名進(jìn)行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) # 讀取 excel 表格數(shù)據(jù) all_data = pd.read_excel(file_path_li,sheet_name=None) print(all_data) --------------------------------------------------------------------OrderedDict([(’202001’, 車(chē)牌號(hào) 駕駛員 起始公里 截至公里 里程數(shù) 加油金額 加油公升0 鄂J0969 陳燕 186701.0 186935 234 267.07 32.411 鄂A25JL NaN NaN 0 0 NaN NaN2 鄂A37NK 呂揚(yáng) 40283.0 40993 710 512.08 68.373 鄂A332B NaN NaN 0 0 NaN NaN4 鄂A3J78L 尚超 0.0 33 33 NaN NaN5 鄂A484ZF 魯浩 50286.0 52574 2288 1340.84 191.456 鄂A620J 袁耀 41398.0 43604 2206 1579.69 225.677 鄂A7A8Z 志勇 41560.0 42883 1323 788.48 107.578 鄂AJ37Y 劉沖 0.0 73 73 NaN NaN9 鄂AD9251 毛義 3214.0 3349 135 NaN NaN10 鄂AD2192 趙敏 434.0 796 362 NaN NaN),...], ...)

從上打印出的結(jié)果(我取了第一個(gè)),會(huì)發(fā)現(xiàn)它的類(lèi)型為 OrderedDict ,雖然組合起來(lái)好像不是很看得懂,但是分開(kāi)來(lái)看,它的本質(zhì)實(shí)際上是 Dict。所以實(shí)際上我們可以通過(guò) 202001 來(lái)獲取對(duì)應(yīng)的數(shù)據(jù)值。如:

# 遍歷出每個(gè)文件名for file_name in file_name_li: # 將文件夾絕對(duì)路徑 與 文件名進(jìn)行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) # 讀取 excel 表格數(shù)據(jù) all_data = pd.read_excel(file_path_li,sheet_name=None) print(all_data['202001'])---------------------------------------------------------------------車(chē)牌號(hào) 駕駛員 起始公里 截至公里 里程數(shù) 加油金額 加油公升0 鄂J0969 陳燕 186701.0 186935 234 267.07 32.411 鄂A25JL NaN NaN 0 0 NaN NaN2 鄂A37NK 呂揚(yáng) 40283.0 40993 710 512.08 68.373 鄂A332B NaN NaN 0 0 NaN NaN4 鄂A3J78L 尚超 0.0 33 33 NaN NaN5 鄂A484ZF 魯浩 50286.0 52574 2288 1340.84 191.456 鄂A620J 袁耀 41398.0 43604 2206 1579.69 225.677 鄂A7A8Z 志勇 41560.0 42883 1323 788.48 107.578 鄂AJ37Y 劉沖 0.0 73 73 NaN NaN9 鄂AD9251 毛義 3214.0 3349 135 NaN NaN10 鄂AD2192 趙敏 434.0 796 362 NaN NaN 車(chē)牌號(hào) 駕駛員 起始公里 截至公里 里程數(shù) 加油金額 加油公升0 鄂J0039 周鵬 15512 15512 0 NaN NaN1 鄂J0021 王林 7790 7790 0 NaN NaN2 鄂J0022 徐濤 373505 373505 0 NaN NaN3 鄂J0079 趙舟 431169 431169 0 NaN NaN4 鄂J0018 郭鷹 3635 3635 0 NaN NaN5 鄂J0808 周尊 257743 257743 0 NaN NaN6 鄂J01X3 胡志 72000 72150 150 159.26 25.167 鄂J01X0 吳軍 73031 73568 537 393.46 58.128 鄂J0F12 宋安 149017 149050 33 0.00 0.009 鄂J0F52 金煜 150617 150617 0 NaN NaN10 鄂J0272 劉兵 58124 58305 181 0.00 0.0011 鄂J02F2 胡飛 169665 169665 0 NaN NaN12 鄂J0292 王勇 111625 113121 1496 1081.37 156.5413 鄂J05R0 劉金 99278 99278 0 NaN NaN

從打印結(jié)果,可以發(fā)現(xiàn),我們通過(guò) 202001 可以取到兩個(gè)工作簿中 202001 的數(shù)據(jù),這是為什么呢?傻瓜,因?yàn)檠h(huán)呀~所以,現(xiàn)在我們就想,把數(shù)據(jù)都添加到一個(gè)列表中。除此之外,我們還需要工作表名來(lái)獲取數(shù)據(jù),也就是將工作表名保存到一個(gè)集合中(以便去重)。

# 定義文件名集合all_file_name = set()# 定義數(shù)據(jù)列表all_data_li = []# 遍歷出每個(gè)文件名for file_name in file_name_li: # 將文件夾絕對(duì)路徑 與 文件名進(jìn)行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) # 讀取 excel 表格數(shù)據(jù) all_data = pd.read_excel(file_path_li,sheet_name=None) # 將數(shù)據(jù)添加到數(shù)據(jù)列表中 all_data_li.append(all_data) # 將工作表名添加到文件夾集合中 for name in all_data: all_file_name.add(name)print(all_data_li)print(all_file_name)

有了這些寶貝之后,我們就可以來(lái)實(shí)現(xiàn)非常關(guān)鍵的步驟了,也就是取出相同名稱(chēng)的工作表進(jìn)行拼接保存到新的工作表中。

不過(guò)仍然要思考的是,我們?cè)趺词褂?pandas 給一個(gè)工作簿中添加多個(gè)工作表呢?那就需要使用 pd.ExcelWriter了。代碼如下:

# 創(chuàng)建工作簿writer = pd.ExcelWriter('all_data.xlsx')# 遍歷每個(gè)工作表名for sheet_name in all_file_name: data_li = [] # 遍歷數(shù)據(jù) for data in all_data_li: # 獲取同名數(shù)據(jù)并添加到data_li中 n_rows = data_li.append(data[sheet_name]) # 將同名數(shù)據(jù)進(jìn)行拼接 group_data = pd.concat(data_li) # 保存到writer工作簿中,并指定工作表名為sheet_name group_data.to_excel(writer,sheet_name=sheet_name)# 千萬(wàn)莫忘記,保存工作簿writer.save()

python 合并多個(gè)excel中同名的sheet

就醬,實(shí)現(xiàn)完畢啦~哈哈哈哈哈

以上就是python 合并多個(gè)excel中同名的sheet的詳細(xì)內(nèi)容,更多關(guān)于python 合并excel中的sheet的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: python
相關(guān)文章:
主站蜘蛛池模板: 欧美精品一区视频 | 狠色狠狠色狠狠狠色综合久久 | 欧美成人性色xxxxx视频大 | 成人黄色免费观看 | 伊人狼人综合 | 一级特黄特黄的大片免费 | 欧美日韩顶级毛片www免费看 | 不卡一级毛片免费高清 | 国产欧美一级片 | 精品国产美女福利到在线不卡 | 午夜影院免费入口 | 国产精品亚洲片在线va | 亚洲资源在线播放 | 日韩国产免费一区二区三区 | 久久国产精品高清一区二区三区 | 国产精品久久国产三级国不卡顿 | 欧美一区二区精品 | 国产精品自拍亚洲 | 国产成人夜间影院在线观看 | 性欧美videofree中文字幕 | 92精品国产自产在线观看 | 国产成人免费高清视频网址 | 三级网站国产 | 久久一本一区二区三区 | 国产高清在线精品一区二区三区 | 亚洲精品久久久久久久久久久网站 | 国产欧美在线播放 | 欧美另类专区 | 国产精品久久久久国产精品三级 | 亚洲专区在线视频 | 国产精品一 | 亚洲另类在线视频 | 国产亚洲男人的天堂在线观看 | 久草在线国产视频 | 美女黄视频网站 | 国产另类视频 | 国内精品久久久久久中文字幕 | 亚洲精品国产一区二区在线 | 一本三道a无线码一区v | 亚洲精品不卡视频 | 久久国产精品高清一区二区三区 |