pandas数据分析40——读取 excel 合并单元格的表头

news2024/11/16 15:33:37

案例背景

真的很容易疯....上班的单位的表格都是不同的人做的,所以就会出现各种合并单元格的情况,要知道我们用pandas读取数据最怕合并单元格了,因为没规律...可能前几列没合并,后面几列又合并了....而且pandas对于索引很严格,这种合并单元读取进来就是空的,还怎么查找数据......例如:

 还有这种:

 读取的时候....真的很无语。虽然手工做的表头方便人看,但真的不方便代码来取数。

下面我们来看看怎么自动化读取这种多合并表格的数据,并规范表头。就用这个资产的样例


代码实现

读取数据,前2行都是标题没用跳过,然后header=0,1表示2行作为多层索引。

name='资产类别统计表2023.7.xlsx'

df=pd.read_excel(f'{name}',skiprows=2,header=[0,1],converters={'类别编号': str})
df.head(3)

 

可以看到有‘unnamed’这种合并单元出现的空值的情况。 

我们可以打印查看一下行索引名称:

df.columns

 像这种只有部分下面缺失的,可以直接用上面的第一层索引填充第二层索引,让它还是两层索引,然后继续做多层索引数据框。

cols = df.columns.map(lambda x: [x[0]if 'Unnamed' in i else i for i in x])
multi_cols = pd.MultiIndex.from_arrays([list(col) for col in zip(*cols)])
df.columns=multi_cols
df.head(2)

 这样就是处理好, 然后按照多层索引的方法去进行取数。

若多层索引不熟悉,只想变成正常 的二维数据框,那么就这样:

cols = df.columns.map(lambda x: ''.join('' if 'Unnamed' in i else i for i in x))
cols

 把第一层和第二层的名称都进行合并,然后赋值:
 

df.columns=cols
df.head(2)

 这样就变成了单层数据框,完成!

后面就正常的pandas索引进行取数修改筛选计算等工作了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

骨传导耳机运动怎么样,骨传导耳机容易掉吗?

近两年,骨传导耳机逐渐被大众接纳,并成为如今消费者在挑选耳机时的首选之一,尤其是对于运动爱好者来说,骨传导耳机所拥有的舒适佩戴性、实用性、安全性等优点,是真无线蓝牙耳机所不具备的,那么该如何选择一…

未来办公,与300+AI角色对话,来创建自己的AI角色吧

未来办公,与300AI角色对话,来创建自己的AI角色吧 前言:当一个轻轻松松的甩手掌柜,让AI来打工,自己来数钱,这是AI时代每个人梦寐以求的事情。 一、有三十多个角色帮你打工 办公小助手,有任何问题…

学习图像处理

最近,在学习图像处理的相关知识,特别来记录一下。

JDBC介绍

( Java DataBase Connectivity ) Java 数据库连接就是使用Java语言操作关系型数据库的一套API 我们开发的同一套Java代码是无法操作不同的关系型数据库,因为每一个关系型数据库的底层实现细节都不一样。为了实现同一套Java代码操作不同的关系型数据库,所…

UnitTest

UnitTest基本使用 1、什么是Unittest框架? python自带一种单元测试框架 2、为什么使用UnitTest框架? >批量执行用例 >提供丰富的断言知识 >可以生成报告 3、核心要素: 1). TestCase(测试用例) 2). TestSuite(…

cesium添加倾斜摄影

1.107 版本之前 //倾斜摄影const tileset new Cesium.Cesium3DTileset({url: "http://你的地址/tileset.json",});viewer.scene.primitives.add(tileset);tileset.readyPromise.then(function (tileset) {viewer.zoomTo(tileset);})在2023年7月的版本更新中上述写法…

适合程序员的DB性能测试工具 JMeter

背景 1、想要一款既要能压数到mysql,又要能压数到postGre,还要能压数到oracle的自动化工具 2、能够很容易编写insert sql(因为需要指定表和指定字段类型压数据),然后点击运行按钮后,就能直接运行&#xff…

使用 PyTorch 进行高效图像分割:第 4 部分

一、说明 在这个由 4 部分组成的系列中,我们将使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何实现基于视觉转换器的图像分割模型。 图 1:使用视觉转换器模型架构运行图像分割的结果。 从上到下,输入图像、地面…

文件批量改名,一键将西班牙语文件批量改名为中文!

亲爱的用户们,您是否经常面对大量以西班牙语命名的文件,需要将其转换为中文?手动逐个改名无疑是一项繁琐且耗时的任务。现在,我们为您带来一款便捷的简繁转换工具,让您一键将西班牙语文件批量改名为中文! …

STM32--ADC模数转换

文章目录 ADC简介逐次逼近型ADCADC框图转换模式数据对齐转换时间校准ADC基本结构ADC单通道工程代码: ADC简介 STM32的ADC(Analog-Digital Converter)模拟-数字转换器,是一种逐次逼近型模拟数字转换器,可以将引脚上连续…

node获取抖音直播间Id

node获取抖音直播间Id 信息位置 直播间信息存放在id是RENDER_DATA的script标签里 安装依赖 npm install fetch cheerio # 或 pnpm install fetch cheerionode代码 // room.js const fetch require("fetch"); const cheerio require("cheerio"); // co…

LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置

一.RS的ARP抑制 1.为什么要抑制 2.如何抑制 (1)修改/etc/sysctl.conf文件,增加以下内容 (2)命令行临时设置 二.LVS持久连接 1.客户端持久连接 2.端口持久连接 3.防火墙标记持久连接 一.RS的ARP抑制 1.为什么要…

提示丢失vcomp140.dll怎么办?如何快速修复vcomp140.dll丢失问题

最近我遇到了一个程序启动失败的问题,错误提示显示缺少了vcomp140.dll文件。经过一番研究和尝试,我终于成功修复了这个问题。在这里,我将分享一下我的修复方法。 目录 vcomp140.dll是什么? 如何快速修复呢? vcomp140…

mysql 01.三范式,数据类型

01.概念的区分: mysql是属于DBMS层次的,sql语句是用于DBMS的语句。 02.sql语句详细介绍: SQL的概述Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后…

Nginx安全加固,版本隐藏及HTTP请求头修改方法

1 隐藏nginx版本号 1.1 引言 nginx作为目前较为流行的http server软件,其相关的安全漏洞也非常多,攻击者可以根据我们的nginx版本来了解到相关的漏洞从而针对性的进行攻击。 通过新版本的nginx都会修复一些老版本的已知漏洞,但有时候我们生…

Android Studio实现读取本地相册文件并展示

目录 原文链接效果 代码activity_main.xmlMainActivity 原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk…

华硕win11笔记本双系统deepin 解决更改硬盘模式为AHCI后无法进入Windows的问题

华硕win11笔记本双系统deepin 解决更改硬盘模式为AHCI后无法进入Windows的问题 重新将硬盘模式改为Intel RST Premium With Intel Optane System Acceleration(RAID)然后才能进入Windows&#xff0c;但是改了之后又不能进deepin了&#xff0c;需要再将硬盘模式改为AHCI才能进de…

【100天精通python】Day37:GUI界面编程_PyQT从入门到实战(上)

目录 专栏导读 1 PyQt6 简介&#xff1a; 1.1 安装 PyQt6 和相关工具&#xff1a; 1.2 PyQt6 基础知识&#xff1a; 1.2.1 Qt 的基本概念和组件&#xff1a; 1.2.2 创建和使用 Qt 窗口、标签、按钮等基本组件 1.2.3 布局管理器&#xff1a;垂直布局、水平布局、网格布局…

生信豆芽菜-细胞丰度比较

网址&#xff1a;生信豆芽菜-细胞丰度比较 一、使用方法 1、数据准备 这里需要上传一个行为样本&#xff0c;列为细胞评分的矩阵数据 分组信息 2、选择检验的方法&#xff0c;其中两组的可以选择用wilcox.test/test&#xff0c;三组的可以选择用kruskat.test/anova 3、分组…

最强自动化测试框架Playwright(29)-文件选择对象

FileChooser对象通过page.on("filechoose")事件监听。 如下代码实现点击百度搜图按钮&#xff0c;上传文件进行搜索。 from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser playwright.chro…