Pandas实现批量拆分与合并Excel的示例代码
作者:qq_23605533 发布时间:2022-06-07 22:36:28
标签:Pandas,拆分,合并,Excel
前言
提示:这里可以添加本文要记录的大概内容:
将一个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)
二、合并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)
来源:https://blog.csdn.net/qq_23605533/article/details/124669369
0
投稿
猜你喜欢
- python3 cmp实现python3移除了cmp()函数,但提供了六个丰富的比较运算符,详见此处import operator &nbs
- 1. 张量的拼接(1) numpy.concatenatenp.concatenate((a1,a2,a3,…), axis=0)张量的拼接
- 前言 相信很多时候大家都会用到虚拟环境,他具有可以让你快速切换不同的python版本,
- createTrackbar是Opencv中的API,其可在显示图像的窗口中快速创建一个滑动控件,用于手动调节阈值,具有非常直观的效果。具体
- 阅读是在网站中的一个很重要的部分,可以说是网站的核心。网站最终要呈现给用户的就是内容。尤其是文本内容。豆瓣豆瓣前段时间小改了一下,页面拉宽,
- 当你安装 MySQL 完后、会有个提示:[root@localhost Desktop]# rpm -ivh MySQL-server-5.
- 由于Maui Blazor中界面是由WebView渲染,所以再使用Android的摄像头时无法去获取,因为原生的摄像头需要绑定界面组件所以我
- 前言我们经常会有这样的需求,比如评论功能,每个评论都有可能会有自己的子评论,如果在界面只展示成一列的话非常不美观,也不能体现出他们的层级关系
- ALTER TABLE将表更改为当前字符集。如果在执行ALTER TABLE操作期间遇到重复键错误,原因在于新的字符集将2个键映射到了相同值
- 目录一、前言二、使用1.vue2和vue3的不同2.页面某些数据不需要缓存3.动态设置keepAlive属性4.使用include,excl
- 前言Python是C语言实现的,因此Python对象在C语言层面应该是一个结构体 ,组织对象占用的内存。 不同类型的对象,数据及行为均可能不
- 在Windows环境下,经常遇到系统Over的情况,如果你在新装了系统和SQL Server 2005后,需要把SQL Server2000
- 本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作。安装首先,要使用Python的SDK必须要先安
- Lightbox里面的一个函数,能把页面实际的高宽与浏览器可视面积的高宽保存在一个数组中..非常好用.什么是Lightbox?下载light
- 本文实例讲述了python实现对一个完整url进行分割的方法。分享给大家供大家参考。具体分析如下:python对一个完整的url进行分割,将
- Python使用 continue 语句跳出循环,而break跳出整个循环。continue 语句用来告诉Python跳过当前循环的剩余语句
- 可以使用python中的sys模块的getrefcount()方法来获取对象引用的个数。具体可以看以下的实例:import sys # 首先
- 无聊刷日剧,看到签到断了好久,简单写了个脚本,通过模拟抓包的方式实现1、先登录到字幕组网站获取token2、用获取到的token登录到人人活
- 一、什么是RequestsRequests 是Python语编写,基于urllib,采Apache2 Licensed开源协议的 HTTP
- 目录urllib库作用Urllib 库下的几种模块的基本使用一、urllib.request模块1.功能2.常用方法参数说明:总结urlli