python pandas读取excel时动态确定标题行所在行数,动态跳过标题前空白行

利用python对excel或者csv文件进行批量操作时,除了使用xlrd库或者xlwt库进行表格的操作读与写,还可以使用pandas库进行类似的操作,而且一些情况下pandas操作更加简介方便。

pandas的read_csv或者read_excel方法可以进行读取操作,我们看到参数很多,使用skiprows可以设置跳过相应的行数:

pd.read_excel(io, sheetname=0,header=0,skiprows=None,index_col=None,names=None,arse_cols=None,date_parser=None,na_values=None,thousands=None, convert_float=True,has_index_names=None,converters=None,dtype=None,true_values=None,false_values=None,engine=None,squeeze=False,**kwds)io参数:一般是文件路径+文件名,sheet_name参数:用来设置读取的工作表名称,可以为str,int,list或None,默认0。
设置为整数用于零索引工作表位置,字符串/整数列表用于请求多个工作表。设置None获取所有工作表。header参数:用来指定哪些行作为列名的,默认是第0行,接收的参数可以是整数,可以是有整数组成的列表index_col参数:指定用哪些列做为行索引,可以接收整数,或者由整数组成的列表,默认是None。
这个参数的作用是指定用哪一列做为行索引。如果传给参数的是整数n,则表示指定第n列作为行索引,如果传入的是列表,则表示需要指定多列作为行索引。skiprows参数:要跳过的行或行范围(甚至是lambda)

下面是操作文件案例:

我们观察到,多个工作表中的标题前一定数量的空行无用行,而且不同工作表标题前的空行数量不一样,导致行索引的行位置不确定,能不能让程序自己来判断,跳过相应的行数呢

import pandas as pd
import numpy as np
import redfs=pd.read_excel(r".\cz_2020.9-2021.1.xls",sheet_name=None,header=None,index_col=None,skiprows=None)
df_dst=pd.DataFrame(data=None,columns=["姓名","年级","合计"])for sht_name,df in dfs.items():#仅仅读取 XXXX.XX格式的工作表if re.match(r"\d{4}\.\d{1,2}",sht_name):# first_row = (df.count(axis=1) >= df.shape[1]).idxmax()                #查找列名所在行数的一种方法,处理10,11月份没有问题,9月份出现问题first_row = (df.count(axis=1) >= df.count(axis=1).max()).idxmax()       #查找列名所在行数的另一种办法print("工作表:%s 跳过了%d行" %(sht_name,first_row))df.columns=df.loc[first_row]        #更改当前df的列索引名称df.rename(columns =lambda x:str(x).strip("\r\n\t ."),inplace=True)      #去掉列名首位的空白字符df=df.loc[first_row+1:]df_dst=pd.merge(df_dst,df[["姓名","年级","合计"]],how="outer",on="姓名",suffixes=("",sht_name))     #以姓名作为公共列,对多个df数据集进行连接。#print(df)else:print(sht_name,"ignore")#删掉第一个年级列,将第一个合并列移动到最后
df_tmp=df_dst.pop("合计")
df_dst.insert(df_dst.shape[1],"合计",df_tmp)
df_dst= df_dst.drop(["年级"],axis=1)
df_dst.to_excel(r"..\wage\wage_dst.xls")

程序运行结果如下:

最关键的代码如下:

        # first_row = (df.count(axis=1) >= df.shape[1]).idxmax()                #查找列名所在行数的一种方法,处理10,11月份没有问题,9月份出现问题first_row = (df.count(axis=1) >= df.count(axis=1).max()).idxmax()       #查找列名所在行数的另一种办法df.columns=df.loc[first_row]        #更改当前df的列索引名称df=df.loc[first_row+1:]

也就是充分利用df.count(axis=1)的效果,对10,11月份的工作表使用(df.count(axis=1) >= df.shape[1]).idxmax()也可以达到效果,但是

(df.count(axis=1) >= df.count(axis=1).max()).idxmax()的适用性更强

python pandas读取excel时动态确定标题行所在行数相关推荐

  1. Python+Pandas读取Excel文件分析关系最好的两个演员

    董老师又双叒叕送书啦,6本<Python程序设计基础与应用(第2版)> 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国 ...

  2. Python+pandas读取Excel文件统计最受欢迎的前3位演员

    推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社,2018.8出版,2021.3第11次印刷 图书详情: 配套资源: 用书教师可 ...

  3. python pandas读取excel文件

    python pandas读取excel文件 data=pd.read_excel('C:\Users\86188\python\dummy.xlsx') 会报错:SyntaxError: (unic ...

  4. python pandas 读取excel 去重某一列_Python中Pandas读取修改excel操作攻略(代码示例)...

    本篇文章给大家带来的内容是关于Python中Pandas读取修改excel操作攻略(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 环境:python 3.6.8 以某米赛 ...

  5. Python+pandas读取Excel文件并统计演员参演电影数量

    Excel样本数据请参考Python读取Excel文件并统计演员参演电影 >>> import pandas as pd >>> df = pd.read_exce ...

  6. Python Pandas 读取 Excel 表格处理出席表

    一.思路 背景 EXCEL 表格中有每天大家到场的记录,每页格式相同,包含人名.日期和是否到场参加(也可线上).如下: 思路 目标:统计每个人来了几次(进阶一点的话,包括线下线上). 思路:(字典,p ...

  7. python pandas 读取excel单元门公式值_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  8. 【实践3】Python pandas读取Excel指定单元格 / 在指定单元格插入数据,不改变Excel格式

    简单介绍 有时会遇到只需将爬取的数据填入指定的单元格,而不需要更改Excel格式的情况,或是将一个Excel指定单元格内容复制后插入另一个Excel的单元格. 完整代码 import pandas a ...

  9. Python pandas读取excel单元格数据,显示不全问题

    用pandas的pd.read_excel()方法在读取一个存储图片URL路径的EXCEL表格数据时,由于路径较长,出现了单元格内容显示不全的问题.尤其是在使用pd.to_excel()将处理好的数据 ...

最新文章

  1. iphone adb android,通过ADB获取Android手机信息
  2. ios android 发东西,Android、IOS主动发事件给React Native
  3. 如何在Debian上安装配置ownCloud
  4. 苹果开发者账号可以创建多少测试证书_ios苹果企业账号你所不知道的那些点
  5. oracle+内存错误,oracle使用内存的错误,ORA-27102: out of memory
  6. 第8章 数据库的分库分表
  7. .Net读取rss的两种方法
  8. php中js验证表单,js实现表单验证
  9. 公司新来了个00后测试卷王,老油条表示是真干不过,已被……
  10. 两种方式设置单元格的下划线
  11. JSON cannot be resolved 解决方法
  12. Java使用POI导入excel教程
  13. Python函数调用
  14. 吴恩达-deep learning 02.改善深层神经网络:优化算法 (Optimization algorithms)Week2
  15. 独立操作按钮操作后自动失焦
  16. 怎么靠网络的正常渠道赚钱?
  17. 所有用户登陆后都在桌面上显示计算机图标,如何在Win10桌面上显示计算机.控制面板.网络.用户的文件图标?...
  18. spacy语言模型安装踩坑经历
  19. NSGA-II改进之种群初始化
  20. 另一个jar包引不了_《嫌疑人X的献身》:一个天才的陨落

热门文章

  1. 做转子力学分析,你选APDL还是Workbench仿真?
  2. vue不具名插槽与具名插槽
  3. 金誉半导体:MOS管耗尽型和增强型是什么意思?
  4. 红米k30至尊版是5g吗 红米k30至尊版怎么样
  5. Actor编程模型——简介
  6. 【无标题】60秒倒计时
  7. 【Unity脚本】游戏开发常用功能——以平台动作游戏为例解决“瞬移穿墙”问题
  8. chatgpt为什么在中国不能用
  9. mezzanine安装和使用
  10. 一键生成IOS App Icon工具