之前帮同事处理的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数据相关推荐

  1. python《pandas入门》实现Excel数据字段的拆分

    ** python<pandas入门>实现Excel数据字段的拆分 ,简单说一下自己为什么写博客,主要原因如下: 1,先简单介绍下自己,我是药学本科毕业,工作几年了.在这几年里做过药物相关 ...

  2. 用pandas批量分组处理excel数据

    用pandas批量分组处理excel数据 需求比较简单,按照指定字段分组,计算指定字段的和或均值. 用SQL处理的话就一个groupby,可是没有数据库环境,只好用python(比起SQL真的是一点也 ...

  3. python pandas csv读取_如何用 pandas 读取 csv 和 Excel 数据

    本文采用真实的股票数据作为案例,教你如何在Python中读取常用的数据文件. 内容: 读取csv数据 读取Excel数据 合并多张表 数据文件下载地址: 读取csv数据 csv文件用逗号来分隔数值,是 ...

  4. python用pandas读取excel_Python 中利用Pandas处理复杂的Excel数据

    关于Excel数据处理,很多同学可能使用过Pyhton的pandas模块,用它可以轻松地读取和转换Excel数据.但是实际中Excel表格结构可能比较杂乱,数据会分散不同的工作表中,而且在表格中分布很 ...

  5. python用pandas读取excel_浅谈python之利用pandas和openpyxl读取excel数据

    在学接口自动化测试时, 需要从excel中读取测试用例的数据, 假如我的数据是这样的: 最好是每行数据对应着一条测试用例, 为方便取值, 我选择使用pandas库, 先安装 pip install p ...

  6. pandas结合matplotlib将excel数据可视化

    用pandas将数据读出来 import pandas as pd data = pd.read_excel('D:\\python_workspace\\data.xlsx') 用matplotli ...

  7. pandas读取excel数据并对重复数据进行标记或者删除

    pandas通常在读取excel数据之后,如果需要进行去重,有两种方式,一种是进行标记,另一种是在pandas中直接去重 如下图所示,excel数据: (1)使用drop_duplicates(sub ...

  8. python怎么筛选excel数据_懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(上)-excel筛选...

    转发本文并私信我"python",即可获得Python资料以及各种心得(持续更新的) 系列文章: 前言 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理 ...

  9. python处理excel教程实例-python如何处理excel数据

    python处理excel数据的方法:1.使用xlrd来处理:2.使用[xlutils+xlrd]来处理:3.使用xlwt来处理:4.使用pyExcelerator来处理:5.使用Pandas库来处理 ...

  10. cdatabase读取excel第一行数据_pandas读取excel数据并对重复数据进行标记或者删除

    pandas读取excel数据并对重复数据进行标记或者删除​mp.weixin.qq.com pandas通常在读取excel数据之后,如果需要进行去重,有两种方式,一种是进行标记,另一种是在pand ...

最新文章

  1. 伍六七带你学算法 进阶篇-生命游戏
  2. CV算法复现(分类算法1/6):LeNet5(1998年 LeCun)
  3. Altera FPGA管脚弱上拉电阻详细设置方法
  4. 怎么把图片存入mysql_如何把图片存储到mysql数据库中
  5. hdu 2833(Floyd + dp)
  6. python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法
  7. Win2003_IIS6服务器设置排错解答
  8. 收集sqlite常见问题
  9. 光纤收发器和光电转换器有什么区别?
  10. mysql管理员就业_MySQL管理员必备的十大工具盘点
  11. 转:html id与name区别
  12. PCL学习(三) SAC-IA 估记object pose
  13. 引入jQuery的src设置
  14. php分析图片中水印的位置,图像处理技术之图片添加水印
  15. 数据可视化、模板框架、动态控件、可视化大屏、数据监管、监控平台、图表元件库、数据看板、驾驶舱、统计图表、园区、大屏展示、安防、智慧城市、旅游、健康、医疗卫生、交通、农业、政务、AI、食品、医院、安全
  16. mysql客户端重庆_MySQL:MySQL工具以及5.7mysqlbinlog|mysql速度极慢问题
  17. 如何用php搭建彩票网站源码,详解聚富彩票源码搭建 HTML表单与PHP Web程序 - 贪吃蛇学院-专业IT技术平台...
  18. java后台对接app微信支付
  19. PlantUML - 程序员必备绘图工具,不只是UML
  20. router 路由守卫

热门文章

  1. 计算机上的刷新快捷键,刷新快捷键是
  2. 使用nginx代理实现前后端分离开发调试,零基础教程
  3. Typora字体设置
  4. maya mentray_新手快速掌握Maya Mental ray
  5. PS魔棒工具提示不能完成请求,因为程序错误和不能完成请求,因为没有足够内存以及内存不能为read的处理
  6. Win10系统U盘启动盘制作详解
  7. POJO, VO什么的是个什么鬼?
  8. 各类后台脚本语言区别(PHP、JSP、ASP和ASPX)
  9. vue 前端下载excel文件模板
  10. 《吴恩达深度学习》学习笔记011_深度卷积网络:实例探究(Deep convolutional models: case studies)