python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表
简要
利用python实现把一个工作表中的某些列,和其中单独的一列,提取成为一个个新表。
如图(处理前)蓝色部分是需要保留的列,红色是需要一项一项分出来作为单独表格的列。
其中,第一行的名字是用的回车作为分隔,所以在提取名字时需要去除\n。
整体思路就是先保留前六列,然后加上后面的每一列,每加一列的同事加一个单独的sheets,最后获取第一行每一列的名字,将sheets进行命名。
如图(处理后)分出来的省份变为了文件名,列为专业人数,并且去除了空值。
1、导入文件
首先import panda as pd,随后通过pd.panda 导入工作表。
data = pd.read_excel("D:\\PycharmProjects\\hellow\\excel\\招生信息.xlsx")#打开原始工作表
文件目录采用双斜线替换了反斜线,避免了因为误识别文件目录为转义符导致的错误,类似解决错误转义符出错的方法如下。
(1)路径前加‘r’
(2)替换为双斜线
(3)替换为正斜线
详情可转到文章(运行python文件报SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: tr):https://blog.csdn.net/xd060606/article/details/87164798
2、获取工作表行数列数
lens = data.shape[1] # 获取行数 shape[1]获取列数
rows = data.shape[0] # 获取行数 shape[0]获取行数
3、判断单元格内元素是否为数字
def is_number(uchar):
"""判断一个unicode是否是数字"""
if uchar >= u'\u0030' and uchar <= u'\u0039':
return True
else:
return False
def format_str(content):
4、只提取字符串中的汉字函数
def is_chinese(uchar):
"""判断一个unicode是否是汉字"""
if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
return True
else:
return False
'''只提取字符串中的汉字函数'''
content_str = ''
for i in content:
if is_chinese(i):
content_str = content_str + i
return content_str
此函数可实现输入一个含有字符串,只提取字符串中的汉字并返回。
详情可见文章(python字符串只保留汉字):
https://blog.csdn.net/u012155582/article/details/78587394
5、判断单元格有数字并提取分列
df_list_all=[]#预定义一个空列表存储所有的sheets
for department in range(6, lens):#对第六列以后的每一列进行提取
df_list = pd.DataFrame()#定义空pd.dataframe
for i in range(1, rows):#对每一行进行遍历
if is_number(str(data.iloc[i][department])) == True:#判断单元格的值为数字,仅提取有数据的行
df_list = pd.concat([df_list, data.iloc[[i], [0, 1, 2, 3, 4, 5, department]]], axis=0, ignore_index=True)#提取0,1,2,3,4,5,department列
df_list_all.append(df_list)#利用append把所有整理好的分列表进行汇总
writer = pd.ExcelWriter('D:\\Users\\79033\\PycharmProjects\\hellow\\excel\\new.xlsx') # 利用pd.ExcelWriter()存多张sheets
6、保存工作表并重命名
for i in range(len(df_list_all)):#保存sheets到new.xlsx
name=str(data.iloc[[1],i+6])#提取每一分列第一行对应字符串
name=zifu_hanzi.format_str(name)#将列名保存下来
df_list_all[i].to_excel(writer, sheet_name=name, index=False) # 注意加上index=FALSE 去掉index列
writer.save()#保存文件
7、完整代码
"""
把excel表按照某列拆分成多个表
具体为保留前六列的前提下,把第六列以后的每一列都形成一个分表 ,并且不存在空元素
"""
import pandas as pd
data = pd.read_excel("D:\\Users\\79033\\PycharmProjects\\hellow\\excel\\招生信息.xlsx")#打开原始工作表
lens = data.shape[1] # 获取行数 shape[1]获取列数
rows = data.shape[0] # 获取行数 shape[0]获取行数
def is_chinese(uchar):
"""判断一个unicode是否是汉字"""
if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
return True
else:
return False
def is_number(uchar):
"""判断一个unicode是否是数字"""
if uchar >= u'\u0030' and uchar <= u'\u0039':
return True
else:
return False
def format_str(content):
'''只提取字符串中的汉字函数'''
content_str = ''
for i in content:
if is_chinese(i):
content_str = content_str + i
return content_str
df_list_all=[]#预定义一个空列表存储所有的sheets
for department in range(6, lens):#对第六列以后的每一列进行提取
df_list = pd.DataFrame()#定义空pd.dataframe
for i in range(1, rows):#对每一行进行遍历
if is_number(str(data.iloc[i][department])) == True:#判断单元格的值为数字,仅提取有数据的行
df_list = pd.concat([df_list, data.iloc[[i], [0, 1, 2, 3, 4, 5, department]]], axis=0, ignore_index=True)#提取0,1,2,3,4,5,department列
df_list_all.append(df_list)#利用append把所有整理好的分列表进行汇总
writer = pd.ExcelWriter('D:\\Users\\79033\\PycharmProjects\\hellow\\excel\\new.xlsx') # 利用pd.ExcelWriter()存多张sheets
for i in range(len(df_list_all)):#保存sheets到new.xlsx
name=str(data.iloc[[1],i+6])#提取每一分列第一行对应字符串
name=zifu_hanzi.format_str(name)#将列名保存下来
df_list_all[i].to_excel(writer, sheet_name=name, index=False) # 注意加上index=FALSE 去掉index列
writer.save()#保存文件
学习python几个月了,写了几次代码,学习过程中参考了很多大佬的博客,自己第一次写博客,一方面为了做笔记吧,一方面也为了方便大家。本程序是自己写的,但是也借鉴了许多别人的地方,文中已用链接标出,希望大家喜欢,谢谢各位大佬们!!
python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表相关推荐
- python如何清空excel表格_利用python操作win32com删除excel工作表
win32com是一个操作excel的接口.在使用python操作win32com的时候,默认是displayalerts的,而很多操作我们都是默认会操作,所以要关闭掉displayalerts. 下 ...
- python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc
利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...
- python读取图片文字为表格_利用python将图片转换成excel文档格式
前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...
- python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- c语言读取excel表格_利用pandas处理excel表格
这不是一篇详细介绍pandas的文章,只是我在利用python处理excel表格时找到的一些临时方案,为了避免忘记,记录在这里,也可能对你有帮助. pandas在对excel处理上使用的是xlrd和x ...
- python怎么筛选excel数据_python筛选数据excel表格-如何利用python提取两个excel对比后的重复值的信息?...
怎么用python读取excel表格的数据 import xlrd #open the .xls file xlsname="test.xls" book = xlrd.open_ ...
- python关闭excel文件_利用Python读取和修改Excel文件(包括xls文件和xlsx文件)
本文介绍一下使用Python对Excel文件的基本操作,包括使用xlrd模块读取excel文件,使用xlwt模块将数据写入excel文件,使用openpyxl模块读取写入和修改excel文件. 目录 ...
- python和excel数据分析_利用Python处理和分析Excel表中数据实战
作为一个学习用Python进行数据分析的新手来说,通过本文来记录分享一些我在用Python中的pandas.numpy来分析Excel表中数据的数据清洗和整理的工作,目的是熟悉numpy以及panda ...
- python做excel宏_利用Python 开发 Excel 宏脚本的神器!
今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python. 基本环境 操作系统:Windows 10 x64 ...
最新文章
- 如果足够准的话,还有比体脂秤更好的身体数据采集器吗?
- pytorch torchtext
- linux 静态路由修改
- 利用dex2jar反编译apk
- 实战HTML:根据参数构造动态设备监测列表
- 怎样设置电脑壁纸_怎样把C盘设置成禁止安装任何软件?教你两个方法,告别电脑卡顿...
- windows11,安装maven。
- 红米手机使用应用沙盒一键修改cpu信息
- 刘宝瑞相声《珍珠翡翠白玉汤》台词
- QT ffmpeg 播放器
- C语言字母排序不分大小写,如何按字母顺序排序字符串数组(区分大小写,非标准排序规则)...
- 数据分析师如何搭建数据运营指标体系?
- 如何学习Java并发编程
- 超频技术之内存“时序”重要参数设置解说
- 用java解一元二次方程组
- java 处理物料清单_ERP之物料清单(BOM)
- 欧洲为何没有牛逼的互联网公司?
- 回溯法求解消消乐实验
- BI 产品支持数据填报补录功能吗?
- Modbus通讯协议从一窍不通到原来如此