利用python Pandas实现批量拆分Excel与合并Excel


Posted in Python onMay 23, 2021

一、实例演示

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

work_dir="./course_datas/c15_excel_split_merge"
splits_dir=f"{work_dir}/splits"

import os
if not os.path.exists(splits_dir):
    os.mkdir(splits_dir)

二、读取源Excel到Pandas

import pandas as pd
No output
df_source = pd.read_excel(f"{work_dir}/crazyant_blog_articles_source.xlsx")
No output
df_source.head()
id	title	tags
0	2585	Tensorflow怎样接收变长列表特征	python,tensorflow,特征工程
1	2583	Pandas实现数据的合并concat	pandas,python,数据分析
2	2574	Pandas的Index索引有什么用途?	pandas,python,数据分析
3	2564	机器学习常用数据集大全	python,机器学习
4	2561	一个数据科学家的修炼路径	数据分析
df_source.index
RangeIndex(start=0, stop=258, step=1)
df_source.shape

(258, 3)

total_row_count = df_source.shape[0]
total_row_count

258

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

1.使用df.iloc方法,将一个大的dataframe,拆分成多个小dataframe
2.将使用dataframe.to_excel保存每个小Excel

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

# 这个大excel,会拆分给这几个人
user_names = ["xiao_shuai", "xiao_wang", "xiao_ming", "xiao_lei", "xiao_bo", "xiao_hong"]
No output
# 每个人的任务数目
split_size = total_row_count // len(user_names)
if total_row_count % len(user_names) != 0:
    split_size += 1

split_size

43

2、拆分成多个dataframe

df_subs = []
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))
No output

3、将每个datafame存入excel

for idx, user_name, df_sub in df_subs:
    file_name = f"{splits_dir}/crazyant_blog_articles_{idx}_{user_name}.xlsx"
    df_sub.to_excel(file_name, index=False)
No output

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

1.遍历文件夹,得到要合并的Excel文件列表
2.分别读取到dataframe,给每个df添加一列用于标记来源
3.使用pd.concat进行df批量合并
4.将合并后的dataframe输出到excel

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

import os
excel_names = []
for excel_name in os.listdir(splits_dir):
    excel_names.append(excel_name)
excel_names

['crazyant_blog_articles_0_xiao_shuai.xlsx',
 'crazyant_blog_articles_1_xiao_wang.xlsx',
 'crazyant_blog_articles_2_xiao_ming.xlsx',
 'crazyant_blog_articles_3_xiao_lei.xlsx',
 'crazyant_blog_articles_4_xiao_bo.xlsx',
 'crazyant_blog_articles_5_xiao_hong.xlsx']

2. 分别读取到dataframe

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
    username = excel_name.replace("crazyant_blog_articles_", "").replace(".xlsx", "")[2:]
    print(excel_name, username)
    # 给每个df添加1列,即用户名字
    df_split["username"] = username
    
    df_list.append(df_split)

crazyant_blog_articles_0_xiao_shuai.xlsx xiao_shuai
crazyant_blog_articles_1_xiao_wang.xlsx xiao_wang
crazyant_blog_articles_2_xiao_ming.xlsx xiao_ming
crazyant_blog_articles_3_xiao_lei.xlsx xiao_lei
crazyant_blog_articles_4_xiao_bo.xlsx xiao_bo
crazyant_blog_articles_5_xiao_hong.xlsx xiao_hong

3. 使用pd.concat进行合并

df_merged = pd.concat(df_list)
No output
df_merged.shape

(258, 4)

df_merged.head()

id title tags username
0 2585 Tensorflow怎样接收变长列表特征 python,tensorflow,特征工程 xiao_shuai
1 2583 Pandas实现数据的合并concat pandas,python,数据分析 xiao_shuai
2 2574 Pandas的Index索引有什么用途? pandas,python,数据分析 xiao_shuai
3 2564 机器学习常用数据集大全 python,机器学习 xiao_shuai
4 2561 一个数据科学家的修炼路径 数据分析 xiao_shuai

df_merged["username"].value_counts()

xiao_hong     43
xiao_bo       43
xiao_shuai    43
xiao_lei      43
xiao_wang     43
xiao_ming     43
Name: username, dtype: int64

xiao_hong     43xiao_bo       43xiao_shuai    43xiao_lei      43xiao_wang     43xiao_ming     43Name: username, dtype: int64

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

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

到此这篇关于利用python Pandas实现批量拆分Excel与合并Excel的文章就介绍到这了,更多相关Pandas批量拆分Excel与合并Excel内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python随手笔记之标准类型内建函数
Dec 02 Python
Python可变参数用法实例分析
Apr 02 Python
python学习教程之Numpy和Pandas的使用
Sep 11 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
python 设置输出图像的像素大小方法
Jul 04 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
关于python字符串方法分类详解
Aug 20 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
pygame实现非图片按钮效果
Oct 29 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 Python
Python基础之元编程知识总结
May 23 #Python
Python利用folium实现地图可视化
python爬虫之selenium库的安装及使用教程
教你利用python实现企业微信发送消息
python基础之文件处理知识总结
May 23 #Python
Python绘制地图神器folium的新人入门指南
Python关于OS文件目录处理的实例分享
May 23 #Python
You might like
php判断GIF图片是否为动画的方法
2020/09/04 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
AngularJS 教程及实例代码
2017/10/23 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
python 合并文件的具体实例
2013/08/08 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python障碍式期权定价公式
2019/07/19 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
工厂厂长的职责
2013/12/12 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
高效课堂教学反思
2016/02/24 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
PHP中多字节字符串操作实例详解
2021/08/23 PHP
mysql中关键词exists的用法实例详解
2022/06/10 MySQL