Pandas实现批量拆分与合并Excel的示例代码


Posted in Python onMay 30, 2022

前言

提示:这里可以添加本文要记录的大概内容:

将一个EXCEL等份拆成多个EXCEL

将多个小EXCEL合并成一个大EXCEL并标记来源

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

一、拆分成小表格

代码如下(示例):

import pandas as pd
import os
work_dir=r"G:\360Downloads\myself\zuoye\合并拆分"
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)

Pandas实现批量拆分与合并Excel的示例代码

二、合并excel

1.介绍

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

2、分别读取到dataframe,给每一列标记来源

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

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

2.代码

代码如下(示例):

import pandas as pd
import os
work_dir=r"G:\360Downloads\myself\zuoye\合并拆分"
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的示例代码的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
谈谈Python进行验证码识别的一些想法
Jan 25 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
基于PyTorch中view的用法说明
Mar 03 Python
Python实现仓库管理系统
May 30 #Python
python单向链表实例详解
May 25 #Python
利用Python实现模拟登录知乎
May 25 #Python
python双向链表实例详解
May 25 #Python
Python实现双向链表基本操作
May 25 #Python
python实现双向链表原理
May 25 #Python
Python代码实现双链表
You might like
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
php实现生成验证码实例分享
2016/04/10 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
bootstrap table小案例
2016/10/21 Javascript
使用JS动态显示文本
2017/09/09 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
Python自动抢红包教程详解
2019/06/11 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python实现复制文件到指定目录
2019/10/16 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
外语专业毕业生个人的自荐信
2013/11/19 职场文书
积极分子思想汇报
2014/01/04 职场文书
《乞巧》教学反思
2014/02/27 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis