Pandas处理和转置excel数据
之前帮同事处理的excel文件,因为表头是重复向右延伸,导致有很多列其实含义一致,但又不方便存储;为了方便将该excel的数据直接入库,此处需要将excel中进行处理,删除不必要的标题行、转置excel的行列等等
文件结构示例:
处理前:
组织 | 时间1 | 时间2 | ...... | ||||||
人数 | 表头1 | 表头2 | ...... | 人数 | 表头1 | 表头2 | ...... | ...... | |
处理后:
组织 | 时间 | 人数 | 表头1 | 表头2 | ...... |
时间1 | |||||
时间2 | |||||
... |
代码如下,仅供参考:
import pandasdef xls_cont(path):# 获取第一个sheetsheet = pandas.read_excel(path, dtype='str', header=None)return sheetif __name__ == '__main__':# 定义文件变量filepath = 'D:/上报模板(原).xlsx'aim_path = 'D:/上报模板.xlsx'sheet = xls_cont(filepath)# 获取行数列数rows = sheet.shape[0]cols = sheet.shape[1]# 确定数据起始行列(此处用“人员身份”确定数据的起始位置)for r in range(0, rows):for c in range(0, cols):if sheet.values[r, c] == '人员身份':start_row = rstart_col = cbreak# 获取左侧固定列new_col = ['人员身份', '人员类别', '大类', '一级组织', '二级组织', '三级组织', '细分人员类别', '费用类别', '指标分类','人数', '表头1', '表头2', '表头3', '表头4', '表头5', '表头6', '表头7', '合计1', '合计2']for c in range(start_col, cols):if sheet.values[start_row, c] == new_col[0]:c_dazao = celif sheet.values[start_row, c] == new_col[1]:c_leibie = celif sheet.values[start_row, c] == new_col[2]:c_dalei = celif sheet.values[start_row, c] == new_col[3]:c_zuzhi1 = celif sheet.values[start_row, c] == new_col[4]:c_zuzhi2 = celif sheet.values[start_row, c] == new_col[5]:c_zuzhi3 = celif sheet.values[start_row, c] == new_col[6]:c_xifen = celif sheet.values[start_row, c] == new_col[7]:c_feiyong = c# 以人数为基准,找右侧数据列(列数有规律才这么弄)c_renshu = []for c in range(start_col, cols):if sheet.values[start_row + 1, c] == '人数':c_renshu.append(c)# 开始获取并梳理数据结构new_list = []for i_renshu in c_renshu:for i_r in range(start_row + 2, rows):xifen = str(sheet.values[i_r, c_xifen])if xifen != '' and xifen != 'nan':i_new_list = [sheet.values[i_r, c_dazao], sheet.values[i_r, c_leibie], sheet.values[i_r, c_dalei],sheet.values[i_r, c_zuzhi1], sheet.values[i_r, c_zuzhi2], sheet.values[i_r, c_zuzhi3],sheet.values[i_r, c_xifen], sheet.values[i_r, c_feiyong],sheet.values[start_row, i_renshu],sheet.values[i_r, i_renshu], sheet.values[i_r, i_renshu + 1],sheet.values[i_r, i_renshu + 2], sheet.values[i_r, i_renshu + 3],sheet.values[i_r, i_renshu + 4], sheet.values[i_r, i_renshu + 5],sheet.values[i_r, i_renshu + 6], sheet.values[i_r, i_renshu + 7],sheet.values[i_r, i_renshu + 8], sheet.values[i_r, i_renshu + 9]]new_list.append(i_new_list)# 数据放入DataFramenew_sheet = pandas.DataFrame(new_list, columns=new_col)print(new_sheet)# 保存文件new_sheet.to_excel(aim_path)
Pandas处理和转置excel数据相关推荐
- python《pandas入门》实现Excel数据字段的拆分
** python<pandas入门>实现Excel数据字段的拆分 ,简单说一下自己为什么写博客,主要原因如下: 1,先简单介绍下自己,我是药学本科毕业,工作几年了.在这几年里做过药物相关 ...
- 用pandas批量分组处理excel数据
用pandas批量分组处理excel数据 需求比较简单,按照指定字段分组,计算指定字段的和或均值. 用SQL处理的话就一个groupby,可是没有数据库环境,只好用python(比起SQL真的是一点也 ...
- python pandas csv读取_如何用 pandas 读取 csv 和 Excel 数据
本文采用真实的股票数据作为案例,教你如何在Python中读取常用的数据文件. 内容: 读取csv数据 读取Excel数据 合并多张表 数据文件下载地址: 读取csv数据 csv文件用逗号来分隔数值,是 ...
- python用pandas读取excel_Python 中利用Pandas处理复杂的Excel数据
关于Excel数据处理,很多同学可能使用过Pyhton的pandas模块,用它可以轻松地读取和转换Excel数据.但是实际中Excel表格结构可能比较杂乱,数据会分散不同的工作表中,而且在表格中分布很 ...
- python用pandas读取excel_浅谈python之利用pandas和openpyxl读取excel数据
在学接口自动化测试时, 需要从excel中读取测试用例的数据, 假如我的数据是这样的: 最好是每行数据对应着一条测试用例, 为方便取值, 我选择使用pandas库, 先安装 pip install p ...
- pandas结合matplotlib将excel数据可视化
用pandas将数据读出来 import pandas as pd data = pd.read_excel('D:\\python_workspace\\data.xlsx') 用matplotli ...
- pandas读取excel数据并对重复数据进行标记或者删除
pandas通常在读取excel数据之后,如果需要进行去重,有两种方式,一种是进行标记,另一种是在pandas中直接去重 如下图所示,excel数据: (1)使用drop_duplicates(sub ...
- python怎么筛选excel数据_懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(上)-excel筛选...
转发本文并私信我"python",即可获得Python资料以及各种心得(持续更新的) 系列文章: 前言 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理 ...
- python处理excel教程实例-python如何处理excel数据
python处理excel数据的方法:1.使用xlrd来处理:2.使用[xlutils+xlrd]来处理:3.使用xlwt来处理:4.使用pyExcelerator来处理:5.使用Pandas库来处理 ...
- cdatabase读取excel第一行数据_pandas读取excel数据并对重复数据进行标记或者删除
pandas读取excel数据并对重复数据进行标记或者删除mp.weixin.qq.com pandas通常在读取excel数据之后,如果需要进行去重,有两种方式,一种是进行标记,另一种是在pand ...
最新文章
- 伍六七带你学算法 进阶篇-生命游戏
- CV算法复现(分类算法1/6):LeNet5(1998年 LeCun)
- Altera FPGA管脚弱上拉电阻详细设置方法
- 怎么把图片存入mysql_如何把图片存储到mysql数据库中
- hdu 2833(Floyd + dp)
- python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法
- Win2003_IIS6服务器设置排错解答
- 收集sqlite常见问题
- 光纤收发器和光电转换器有什么区别?
- mysql管理员就业_MySQL管理员必备的十大工具盘点
- 转:html id与name区别
- PCL学习(三) SAC-IA 估记object pose
- 引入jQuery的src设置
- php分析图片中水印的位置,图像处理技术之图片添加水印
- 数据可视化、模板框架、动态控件、可视化大屏、数据监管、监控平台、图表元件库、数据看板、驾驶舱、统计图表、园区、大屏展示、安防、智慧城市、旅游、健康、医疗卫生、交通、农业、政务、AI、食品、医院、安全
- mysql客户端重庆_MySQL:MySQL工具以及5.7mysqlbinlog|mysql速度极慢问题
- 如何用php搭建彩票网站源码,详解聚富彩票源码搭建 HTML表单与PHP Web程序 - 贪吃蛇学院-专业IT技术平台...
- java后台对接app微信支付
- PlantUML - 程序员必备绘图工具,不只是UML
- router 路由守卫
热门文章
- 计算机上的刷新快捷键,刷新快捷键是
- 使用nginx代理实现前后端分离开发调试,零基础教程
- Typora字体设置
- maya mentray_新手快速掌握Maya Mental ray
- PS魔棒工具提示不能完成请求,因为程序错误和不能完成请求,因为没有足够内存以及内存不能为read的处理
- Win10系统U盘启动盘制作详解
- POJO, VO什么的是个什么鬼?
- 各类后台脚本语言区别(PHP、JSP、ASP和ASPX)
- vue 前端下载excel文件模板
- 《吴恩达深度学习》学习笔记011_深度卷积网络:实例探究(Deep convolutional models: case studies)