按列將一個excel表格拆分成多個

1.引言


昨天家人給我發(fā)消息,問我有沒有辦法用excel根據(jù)部門的名稱將一個表拆分成若干個表,我首先就想到用excel自帶的宏來實現(xiàn),結果發(fā)現(xiàn)自己并不會,哈哈,只好放棄,轉而用python去實現(xiàn),實現(xiàn)的功能很簡單,但是因為沒有接觸過python自動化辦公方面,所以花了點時間去搜索,去找方法。
我剛開始的想法是先將整張表讀到數(shù)據(jù)庫里,然后用group by去分類提取到數(shù)組,然后根據(jù)名稱去數(shù)據(jù)庫匹配,最后輸出到excel表。但是這個方法貌似有點蠢了。
經(jīng)過了解,我把目光聚集到pandas這個庫上,實現(xiàn)上簡單方便。

2.pandas簡介


  • Pandas是Python的一個數(shù)據(jù)分析包,該工具為解決數(shù)據(jù)分析任務而創(chuàng)建。它納入大量庫和標準數(shù)據(jù)模型,不僅提供高效的操作數(shù)據(jù)集所需的工具,還提供大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。
  • Pandas是字典形式,基于NumPy創(chuàng)建,讓NumPy為中心的應用變得更加簡單。

具體的方法在這里不介紹(網(wǎng)上都可以查到),主要介紹一下我的方法和思路

3.實現(xiàn)思路


  • 因為用pandas實現(xiàn)所以必須首先導入
import pandas as pd
  • 考慮到讀取excel表需要具體路徑,所以為了適用性,選擇用python自帶的os模塊
import os
data_path = os.path.join(os.getcwd(),"原表.xlsx")   # 獲取以‘原表.xlsx’為名字的文件路徑
  • 接著讀取excel表
data = pd.read_excel(data_path)
rows = data.shape[0]   #獲取行數(shù) 
                       #shape[1]獲取列數(shù)
department_list = []  #創(chuàng)建個空列表用來存放分類標準,即部門名稱
  • 使用循環(huán)將部門名稱添加到空列表
for i in range(rows):
    temp = data["部門名稱"][i]
    if temp not in department_list:
        department_list.append(temp)   #將部門的分類存在一個列表中
  • 接著再使用循環(huán)獲取每一行的數(shù)據(jù),并且進行用部門名稱列表匹配原表,提取數(shù)據(jù)
for department in department_list:
    new_df = pd.DataFrame()
    for i in range (0, rows):
        if data["部門名稱"][i] == department:
            new_df = pd.concat([new_df, data.iloc[[i],:]], axis = 0, ignore_index = True)
  • 最后將每個部門存成一個新的表格
new_df.to_excel(str(department)+".xlsx", sheet_name=str(department), index = False)  

4.注意:

有幾點bug:

(1)要處理的表必須以“原表.xlsx”為名字和格式。(當然這個可以自行修改)
(2)需要分類的標準應該以“部門名稱”為名字的那一列。(也可以修改)
(3)拆分完的表格命名為各部門名稱。

ps:因為家人電腦里并沒有python環(huán)境,所以我選擇用pyinstaller將腳本打包成exe文件,所以產(chǎn)生上述bug,自家使用,隨用隨改,哈哈哈

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容