91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python怎么合并多個excel中同名的sheet

發布時間:2021-01-25 16:13:28 來源:億速云 閱讀:394 作者:Leah 欄目:開發技術

利用python怎么合并多個excel中同名的sheet?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

分析數據特征如下:

數據所在路徑 C:\Users\logic\Desktop\mytest\file_dir

利用python怎么合并多個excel中同名的sheet

data01.xlsx 數據如下:

利用python怎么合并多個excel中同名的sheet

data02.xlsx 數據如下:

利用python怎么合并多個excel中同名的sheet

由上可得信息如下:

  • 所有 xlsx 工作簿都在同一個文件夾下

  • data01.xlsx 與 data02.xlsx 中 sheet 名相同的進行合并。也就是202001與202001合并,其它同理。

我們需要合并數據,首先需要讀取到每個工作簿下每個工作表的數據,實現流程如下:

  • 獲取文件夾下所有工作簿名

  • 拼接為絕對路徑

  • 讀取所有表格數據

  • 保存到空列表中

那要通過代碼完成上面的連環操作,我們就需要使用到 python 中的內置模塊 os 模塊——與操作系統進行交互的模塊,來獲取文件夾下所有工作簿名,代碼如下:

import os # 導入模塊

# 列出 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']

但此時,無法只通過文件名去系統中找到對應的文件,所以我們需要更準確一點兒的地址——絕對路徑,所以現在我們需要拼接每個文件的絕對路徑。代碼如下:

# 遍歷出每個文件名
for file_name in file_name_li:
  # 將文件夾絕對路徑 與 文件名進行拼接
  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

有了文件的絕對路徑后,我們就可以來讀取文件中的數據,那就要使用到法寶 pandas 了。首先大家注意,pandas 并不是 python 的內置模塊,而是需要我們去安裝的。然后使用 pandas 的 read_excel() 方法讀取數據,但是需要注意的是,此時我們需要讀取的是工作簿下的所有工作表,所以需要指定 sheet_name 為 None,否則會默認讀取第一個工作表。代碼如下:

# 遍歷出每個文件名
for file_name in file_name_li:
  # 將文件夾絕對路徑 與 文件名進行拼接
  file_path_li = os.path.join(r"C:\Users\logic\Desktop\mytest\file_dir",file_name)
  # 讀取 excel 表格數據
  all_data = pd.read_excel(file_path_li,sheet_name=None)
  print(all_data)
  
--------------------------------------------------------------------
OrderedDict([('202001',     車牌號 駕駛員   起始公里  截至公里  里程數   加油金額  加油公升
0  鄂J0969  陳燕 186701.0 186935  234  267.07  32.41
1  鄂A25JL NaN    NaN    0   0   NaN   NaN
2  鄂A37NK  呂揚  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),...], ...)

從上打印出的結果(我取了第一個),會發現它的類型為 OrderedDict ,雖然組合起來好像不是很看得懂,但是分開來看,它的本質實際上是 Dict。所以實際上我們可以通過 202001 來獲取對應的數據值。如:

# 遍歷出每個文件名
for file_name in file_name_li:
  # 將文件夾絕對路徑 與 文件名進行拼接
  file_path_li = os.path.join(r"C:\Users\logic\Desktop\mytest\file_dir",file_name)
  # 讀取 excel 表格數據
  all_data = pd.read_excel(file_path_li,sheet_name=None)
  print(all_data["202001"])

---------------------------------------------------------------------
車牌號 駕駛員   起始公里  截至公里  里程數   加油金額  加油公升
0  鄂J0969  陳燕 186701.0 186935  234  267.07  32.41
1  鄂A25JL NaN    NaN    0   0   NaN   NaN
2  鄂A37NK  呂揚  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
  
車牌號 駕駛員  起始公里  截至公里  里程數   加油金額  加油公升
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

從打印結果,可以發現,我們通過 202001 可以取到兩個工作簿中 202001 的數據,這是為什么呢?傻瓜,因為循環呀~所以,現在我們就想,把數據都添加到一個列表中。除此之外,我們還需要工作表名來獲取數據,也就是將工作表名保存到一個集合中(以便去重)。

# 定義文件名集合
all_file_name = set()
# 定義數據列表
all_data_li = []

# 遍歷出每個文件名
for file_name in file_name_li:
  # 將文件夾絕對路徑 與 文件名進行拼接
  file_path_li = os.path.join(r"C:\Users\logic\Desktop\mytest\file_dir",file_name)
  # 讀取 excel 表格數據
  all_data = pd.read_excel(file_path_li,sheet_name=None)
  # 將數據添加到數據列表中
  all_data_li.append(all_data)
  # 將工作表名添加到文件夾集合中
  for name in all_data:
    all_file_name.add(name)

print(all_data_li)
print(all_file_name)

有了這些寶貝之后,我們就可以來實現非常關鍵的步驟了,也就是取出相同名稱的工作表進行拼接保存到新的工作表中。

不過仍然要思考的是,我們怎么使用 pandas 給一個工作簿中添加多個工作表呢?那就需要使用 pd.ExcelWriter了。代碼如下:

# 創建工作簿
writer = pd.ExcelWriter("all_data.xlsx")

# 遍歷每個工作表名
for sheet_name in all_file_name:
  data_li = []
  # 遍歷數據
  for data in all_data_li:
    # 獲取同名數據并添加到data_li中
    n_rows = data_li.append(data[sheet_name])
  # 將同名數據進行拼接
  group_data = pd.concat(data_li)
  # 保存到writer工作簿中,并指定工作表名為sheet_name
  group_data.to_excel(writer,sheet_name=sheet_name)

# 千萬莫忘記,保存工作簿
writer.save()

利用python怎么合并多個excel中同名的sheet

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莱西市| 内黄县| 新兴县| 吴桥县| 无极县| 曲周县| 文山县| 郴州市| 林口县| 房产| 湖南省| 泗阳县| 泾川县| 胶南市| 巩留县| 莲花县| 江口县| 长白| 山阴县| 襄城县| 茶陵县| 苍梧县| 四川省| 龙川县| 略阳县| 宜良县| 丰顺县| 白玉县| 莱阳市| 尚义县| 汉阴县| 惠安县| 武川县| 昌宁县| 塔河县| 碌曲县| 新密市| 阿巴嘎旗| 双桥区| 枣强县| 梁山县|