• Part14:Pandas批量拆分与合并Excel文件


    Pandas批量拆分Excel与合并Excel

    实例演示:

    1.将一个大Excel等份拆成多个Excel

    2.将多个小Excel合并成一个大Excel并标记来源

    1. #本节课的数据目录work_dir
    2. work_dir='./course_datas/c15_excel_split_merge'
    3. #work_dir下面的splits目录,来放置拆分后的小文件
    4. splits_dir=f'{work_dir}/splits'
    5. import os
    6. #如果splits_dir目录不存在就创建一个小目录
    7. if not os.path.exists(splits_dir):
    8. os.mkdir(splits_dir)

    1、读取源Excel到Pandas

    1. import pandas as pd
    2. df_source=pd.read_excel(f'{work_dir}/crazyant_blog_articles_source.xlsx')
    3. df_source.head()

    1. df_source.index
    2. df_source.shape
    3. total_row_count=df_source.shape[0]
    4. total_row_count

     

    一、将一个大Excel等份拆成多个Excel

    1.使用df.iloc方法,将一个人的dataframe,拆分成多个小dataframe

    2.将使用dataframe.to_excel保存每个小Excel

    1、计算拆分后的每个excel的行数

    1. #将一个大的EXCEL文件拆分给这几个人
    2. user_name=['xiaohu','xiaoshuai','xiaolan','xiaofan','xiaok','xiaom']
    1. #每个人的任务数目
    2. splits_size=total_row_count//len(user_name)
    3. #判断每个人分配的任务数是否为整数,若不为整数则+1
    4. if total_row_count % len(user_name) !=0:
    5. splits_size+=1
    6. splits_size

    2、拆分成多个dataframe

    1. #将拆出来的小的dataframe存在df_sub[]当中
    2. df_subs=[]
    3. for index,user_name in enumerate(user_name):
    4. #iloc的开始索引,从0开始进行索引
    5. begin=index*splits_size
    6. #iloc的结束索引
    7. end=begin+splits_size
    8. #实现df按照iloc拆分
    9. df_sub=df_source.iloc[begin:end]
    10. #将每个子df存入列表
    11. df_subs.append((index,user_name,df_sub))

    3、将每个datafame存入excel

    1. for index,user_name,df_sub in df_subs:
    2. file_name=f'{splits_dir}/crazyant_blog_articles_{index}_{user_name}.xlsx'
    3. df_sub.to_excel(file_name,index=False)

    二、合并多个小Excel到一个大Excel

    1.遍历文件夹,得到要合并的Excel文件列表

    2.分别读取到dataframe,给每个df添加—列用于标记来源

    3.使用pd.concat进行df批量合并

    4.将合并后的dataframe输出到excel

    1、遍历文件夹,得到要合并的Excel名称列表

    1. import os
    2. excel_names=[]
    3. for excel_name in os.listdir(splits_dir):
    4. excel_names.append(excel_name)
    5. excel_names
    6. #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

    2、分别读取到dataframe 

    1. df_list=[]
    2. for excel_name in excel_names:
    3. #将每个excel读取到df当中
    4. excel_path=f'{splits_dir}/{excel_name}'
    5. df_split=pd.read_excel(excel_path)
    6. #得到username
    7. username=excel_name.replace('crazyant_blog_articles_','').replace('.xlsx','')[2:]
    8. print(excel_name,username)
    9. #给每个df添加1列,即用户名字
    10. df_split['username']=username
    11. df_list.append(df_split)

    3、使用pd.concat进行合并 

    1. df_merged=pd.concat(df_list)
    2. df_merged.shape
    3. df_merged.head()

    df_merged['username'].value_counts()

     

    4、将合并后的dataframe输出到excel中 

    df_merged.to_excel(f'{work_dir}/crazyant_blog_articles_merged.xlsx',index=False)

  • 相关阅读:
    再读HorNet论文
    Synopsys Sentaurus TCAD系列教程之-- Sdevice《6》Math模块
    C++-矩阵运算-Eigen-几何矩阵变换-常见几何参数求解-平移-缩放-旋转-仿射变换-垂足-面积-周长-方向角
    git常用语句
    一道题学习node.js中的CRLF注入
    Invalid access token: Invalid header string: ‘utf-8‘ codec can‘t decode byte
    [LeetCode]-链表-2
    PHP将word文件转为图片预览
    高等工程数学 —— 第五章 (2)非线性规划的最优条件
    class09:ejs模块
  • 原文地址:https://blog.csdn.net/qq_46044325/article/details/126896083