如何将DataFrame指定3行设为多级列名并模拟read_excel的header功能?
解决多级列名设置问题
直接给你可行的方案,核心是先处理列名行的空值填充(模拟Excel合并单元格的自动填充逻辑),再转成多级索引:
- 提取用于列名的三行(索引3、4、5),转置后用
ffill()填充空值,确保上级列名能覆盖到后续对应列 - 将填充后的结果转换为
MultiIndex - 用原数据从第6行(索引6)开始的部分构建新DataFrame,设置列名为生成的多级索引
具体代码如下:
import pandas as pd import numpy as np # 提取列名行并处理空值填充(若原始空值为字符串,先转成NaN) header_rows = df.iloc[3:6].replace('', np.nan).T.ffill().T # 转换为多级列索引 multi_columns = pd.MultiIndex.from_frame(header_rows) # 构建新DataFrame,数据从索引6开始,重置行索引 new_df = df.iloc[6:].reset_index(drop=True) new_df.columns = multi_columns
这样就能实现和pandas.read_excel(header=[3,4,5])完全一致的多级列名效果。
内容的提问来源于stack exchange,提问作者Elias Urra
相关产品推荐
相关产品推荐

