最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年01月22日 11:34:56   作者:一只闊愛的程序媛  
這篇文章主要介紹了python 如何合并多個(gè)excel中同名的sheet,幫助大家更好的利用python處理excel表格,感興趣的朋友可以了解下

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

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

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

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

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

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

數(shù)據(jù)所在路徑 C:\Users\logic\Desktop\mytest\file_dir

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

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

由上可得信息如下:

  • 所有 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:\Users\logic\Desktop\mytest\file_dir 下所有文件名
file_name_li = os.listdir(r"C:\Users\logic\Desktop\mytest\file_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:\Users\logic\Desktop\mytest\file_dir",file_name)
  print(file_path_li)
  
--------------------------------------------------------------------
C:\Users\logic\Desktop\mytest\file_dir\data01.xlsx
C:\Users\logic\Desktop\mytest\file_dir\data02.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:\Users\logic\Desktop\mytest\file_dir",file_name)
  # 讀取 excel 表格數(shù)據(jù)
  all_data = pd.read_excel(file_path_li,sheet_name=None)
  print(all_data)
  
--------------------------------------------------------------------
OrderedDict([('202001',     車牌號(hào) 駕駛員   起始公里  截至公里  里程數(shù)   加油金額  加油公升
0  鄂J0969  陳燕 186701.0 186935  234  267.07  32.41
1  鄂A25JL NaN    NaN    0   0   NaN   NaN
2  鄂A37NK  呂揚(yáng)  40283.0  40993  710  512.08  68.37
3  鄂A332B NaN    NaN    0   0   NaN   NaN
4  鄂A3J78L  尚超    0.0   33  33   NaN   NaN
5  鄂A484ZF  魯浩  50286.0  52574 2288 1340.84 191.45
6  鄂A620J  袁耀  41398.0  43604 2206 1579.69 225.67
7  鄂A7A8Z  志勇  41560.0  42883 1323  788.48 107.57
8  鄂AJ37Y  劉沖    0.0   73  73   NaN   NaN
9  鄂AD9251  毛義  3214.0  3349  135   NaN   NaN
10 鄂AD2192  趙敏   434.0   796  362   NaN   NaN),...], ...)

從上打印出的結(jié)果(我取了第一個(gè)),會(huì)發(fā)現(xiàn)它的類型為 OrderedDict ,雖然組合起來(lá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:\Users\logic\Desktop\mytest\file_dir",file_name)
  # 讀取 excel 表格數(shù)據(jù)
  all_data = pd.read_excel(file_path_li,sheet_name=None)
  print(all_data["202001"])

---------------------------------------------------------------------
車牌號(hào) 駕駛員   起始公里  截至公里  里程數(shù)   加油金額  加油公升
0  鄂J0969  陳燕 186701.0 186935  234  267.07  32.41
1  鄂A25JL NaN    NaN    0   0   NaN   NaN
2  鄂A37NK  呂揚(yáng)  40283.0  40993  710  512.08  68.37
3  鄂A332B NaN    NaN    0   0   NaN   NaN
4  鄂A3J78L  尚超    0.0   33  33   NaN   NaN
5  鄂A484ZF  魯浩  50286.0  52574 2288 1340.84 191.45
6  鄂A620J  袁耀  41398.0  43604 2206 1579.69 225.67
7  鄂A7A8Z  志勇  41560.0  42883 1323  788.48 107.57
8  鄂AJ37Y  劉沖    0.0   73  73   NaN   NaN
9  鄂AD9251  毛義  3214.0  3349  135   NaN   NaN
10 鄂AD2192  趙敏   434.0   796  362   NaN   NaN
  
車牌號(hào) 駕駛員  起始公里  截至公里  里程數(shù)   加油金額  加油公升
0  鄂J0039 周鵬  15512  15512   0   NaN   NaN
1  鄂J0021 王林  7790  7790   0   NaN   NaN
2  鄂J0022 徐濤 373505 373505   0   NaN   NaN
3  鄂J0079 趙舟 431169 431169   0   NaN   NaN
4  鄂J0018  郭鷹  3635  3635   0   NaN   NaN
5  鄂J0808 周尊 257743 257743   0   NaN   NaN
6  鄂J01X3 胡志  72000  72150  150  159.26  25.16
7  鄂J01X0 吳軍  73031  73568  537  393.46  58.12
8  鄂J0F12 宋安 149017 149050  33   0.00  0.00
9  鄂J0F52 金煜 150617 150617   0   NaN   NaN
10  鄂J0272 劉兵  58124  58305  181   0.00  0.00
11  鄂J02F2 胡飛 169665 169665   0   NaN   NaN
12  鄂J0292 王勇 111625 113121 1496 1081.37 156.54
13  鄂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:\Users\logic\Desktop\mytest\file_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)鍵的步驟了,也就是取出相同名稱的工作表進(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()

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

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

相關(guān)文章

  • Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件

    Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件

    這篇文章主要介紹了Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Python繪制時(shí)鐘的示例代碼

    Python繪制時(shí)鐘的示例代碼

    這篇文章主要介紹了如何利用Python和Pygame庫(kù)繪制一個(gè)簡(jiǎn)單的時(shí)鐘效果。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-02-02
  • PyTorch與PyTorch?Geometric的安裝過(guò)程

    PyTorch與PyTorch?Geometric的安裝過(guò)程

    這篇文章主要介紹了PyTorch與PyTorch?Geometric的安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Django的models模型的具體使用

    Django的models模型的具體使用

    這篇文章主要介紹了Django的models模型的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 對(duì)python中字典keys,values,items的使用詳解

    對(duì)python中字典keys,values,items的使用詳解

    今天小編就為大家分享一篇對(duì)python中字典keys,values,items的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • python使用pytest接口自動(dòng)化測(cè)試的使用

    python使用pytest接口自動(dòng)化測(cè)試的使用

    這篇文章主要介紹了python使用pytest接口自動(dòng)化測(cè)試的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python?numpy生成矩陣基礎(chǔ)用法實(shí)例代碼

    Python?numpy生成矩陣基礎(chǔ)用法實(shí)例代碼

    矩陣是matrix類型的對(duì)象,該類繼承自numpy.ndarray,任何針對(duì)ndarray的操作,對(duì)矩陣對(duì)象同樣有效,下面這篇文章主要給大家介紹了關(guān)于Python?numpy生成矩陣基礎(chǔ)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 基于Python制作圖像完美超分處理工具

    基于Python制作圖像完美超分處理工具

    這篇文章主要和大家分享一個(gè)有意思的模型:RealBasicVSR。本文將利用這個(gè)模型制作一個(gè)圖像超分處理工具,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • python逆向微信指數(shù)爬取實(shí)現(xiàn)步驟

    python逆向微信指數(shù)爬取實(shí)現(xiàn)步驟

    這篇文章主要為大家介紹了python逆向微信指數(shù)爬取的實(shí)現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • python3 實(shí)現(xiàn)的人人影視網(wǎng)站自動(dòng)簽到

    python3 實(shí)現(xiàn)的人人影視網(wǎng)站自動(dòng)簽到

    這里給大家分享的是使用Python3結(jié)合計(jì)劃任務(wù),實(shí)現(xiàn)的人人影視網(wǎng)站自動(dòng)簽到功能的代碼,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-06-06

最新評(píng)論

轮台县| 健康| 武汉市| 镇江市| 丹棱县| 北川| 崇礼县| 白玉县| 葵青区| 鄂伦春自治旗| 都江堰市| 河间市| 梁山县| 金溪县| 嘉黎县| 通渭县| 灯塔市| 调兵山市| 青冈县| 新化县| 龙海市| 夏津县| 云霄县| 武安市| 黎平县| 酉阳| 金阳县| 山东省| 蓝山县| 南康市| 启东市| 和龙市| 鸡西市| 延川县| 新和县| 泸溪县| 呼玛县| 洪雅县| 阳曲县| 廉江市| 卓尼县|