首頁 > 軟體

Pandas實現批次拆分與合併Excel的範例程式碼

2022-05-30 18:01:35

前言

提示:這裡可以新增本文要記錄的大概內容:

將一個EXCEL等份拆成多個EXCEL

將多個小EXCEL合併成一個大EXCEL並標記來源

提示:以下是本篇文章正文內容,下面案例可供參考

一、拆分成小表格

程式碼如下(範例):

import pandas as pd
import os
work_dir=r"G:360Downloadsmyselfzuoye合併拆分"
splits_dir=f"{work_dir}splits"
#如果不存在splits資料夾則建立它
if not os.path.exists(splits_dir):
    os.mkdir(splits_dir)
#引入原始檔
df_source=pd.read_excel(f"{work_dir}/5月份臺賬.xlsx",sheet_name="5月份臺賬87334",skiprows=2)
df_source.head(3)
df_source.index
df_source.shape
total_row_count=df_source.shape[0]
total_row_count
#拆分成多個大小相同的excel
#1.使用df.iloc方法
#2.使用dataframe.to_excel儲存到每個小excel中
#計算拆分後小excel的行數
user_names=["xiaoA","xiaoB","xiaoC","wmy","jzz","xmw"]
#每個人的任務數
split_size=total_row_count//len(user_names)
if total_row_count%len(user_names)!=0:
    split_size+=1
split_size
#拆分多個dataframe
df_subs=[]
#enumerate() 函數用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列
for idx,user_name in enumerate(user_names):
    #iloc的開始索引
    begin=idx*split_size
    #iloc的結束索引
    end=begin+split_size
    #實現df按照iloc拆分
    df_sub=df_source.iloc[begin:end]
    #將每個子df存入列表
    df_subs.append((idx,user_name,df_sub))
#將每個dataframe存入excel
for idx,user_name,df_sub in df_subs:
    filename=f"{splits_dir}/ee_{idx}_{user_name}.xlsx"
    df_sub.to_excel(filename,index=False)

二、合併excel

1.介紹

1、遍歷資料夾,得到要合併的excel檔案列表

2、分別讀取到dataframe,給每一列標記來源

3、使用pd.conca進行df批次合併

4、將合併後的dataframe輸出到excel

2.程式碼

程式碼如下(範例):

import pandas as pd
import os
work_dir=r"G:360Downloadsmyselfzuoye合併拆分"
splits_dir=f"{work_dir}splits"
#如果不存在splits資料夾則建立它
if not os.path.exists(splits_dir):
    os.mkdir(splits_dir)
#遍歷資料夾,得到要合併的excel名稱列表
excel_names=[]
for excel_name in os.listdir(splits_dir):
    excel_names.append(excel_name)
excel_names
df_list=[]
for excel_name in excel_names:
    #讀取每個excel到df
    excel_path=f"{splits_dir}/{excel_name}"
    df_split=pd.read_excel(excel_path)
    username=excel_name.replace("ee_","").replace(".xlsx","")[2:]
    print(excel_name,username)
    #新增列,使用者名稱字
    df_split["username"]=username
    df_list.append(df_split)
#concat合併
df_merged=pd.concat(df_list)
df_merged.shape
df_merged.head()
df_merged["username"].value_counts()
#輸出
df_merged.to_excel(f"{work_dir}/merged.xlsx",index=False)

到此這篇關於Pandas實現批次拆分與合併Excel的範例程式碼的文章就介紹到這了,更多相關Pandas拆分合並Excel內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com