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

案例背景

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

还有这种:

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

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


代码实现

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

python 复制代码
name='资产类别统计表2023.7.xlsx'

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

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

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

python 复制代码
df.columns

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

python 复制代码
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)

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

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

python 复制代码
cols = df.columns.map(lambda x: ''.join('' if 'Unnamed' in i else i for i in x))
cols

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

python 复制代码
df.columns=cols
df.head(2)

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

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

相关推荐
陈老老老板1 小时前
2026企业数据采集选型指南,主流采集 API 与全托管平台深度对比
ai·数据分析
CC数分1 小时前
2026年HRBP岗位硬性要求和加分项
面试·职场和发展·数据分析
2601_962680221 小时前
数据分析面试常考的SQL题和业务题分别是哪几类?
sql·面试·数据分析
用户0332126663672 小时前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
企业数字化笔记2 小时前
固定资产Excel批量导入怎么防重复?资产编码、重复检查和错误回执
java·后端·excel
CC数分3 小时前
2026年金融数据分析岗位需要哪些工具?2027届秋招备考指南
面试·数据分析
computersciencer3 小时前
事件的六种关系之包含关系
程序人生·数学建模·数据分析·概率论
夜雪一千3 小时前
如何使用Python做舆情分析
人工智能·python·数据分析
Mr数据杨4 小时前
二手车价格预测实战解析 从 Kaggle 回归赛题到可落地估价方案
人工智能·数据分析·kaggle竞赛
databook4 小时前
Python 常用统计图表实战指南
python·数据分析·数据可视化