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索引进行取数修改筛选计算等工作了。

相关推荐
龙腾AI白云33 分钟前
如何利用知识图谱实现推理和计算
人工智能·深度学习·语言模型·自然语言处理·数据分析
极光代码工作室1 小时前
基于Hadoop的日志数据分析系统设计
大数据·hadoop·python·数据分析·数据可视化
keke.shengfengpolang3 小时前
别只盯着6500的平均线!2026物联网高职生,如何靠“数据思维”让薪资再跳一级?
数据分析
Hello.Reader7 小时前
Pandas API on Spark 快速入门像写 Pandas 一样使用 Spark
大数据·spark·pandas
工业互联网专业10 小时前
基于Python的广东旅游数据分析_flask+spider
python·数据分析·flask·毕业设计·源码·课程设计·spider
Kun丶21 小时前
Global Mapper 修改DEM
数据分析
炼丹炉大数据1 天前
炼丹炉:宠物电商数据工具首选
大数据·数据分析·宠物
全栈开发圈1 天前
新书速览|Excel+DeepSeek会计与财务高效办公
语言模型·excel
rgb2gray1 天前
论文详解:基于POI与出租车轨迹的城市多中心结构静态-动态多重分形特征
人工智能·python·算法·机器学习·数据分析·可解释
一叶萩Charles1 天前
AI数据分析实战指南
人工智能·数据挖掘·数据分析