Pandas读取Excel后合并前两行为多级表头问题求助
Pandas双表头Excel读取合并方案
错误原因
你在读取Excel时通过header=[0,1]生成的列方向MultiIndex,被后续的轴交换、重置索引操作销毁,最终列变为带nan的单层索引,所以无法合并前两行作为表头。
方案1:合并双表头为单层(符合常规输出需求)
def get_sheet_data(sheet_name='SomeName'): # 读取阶段保留原始双表头结构 df = pd.read_excel(f'{full_q_name}', sheet_name=sheet_name, header=[0,1], index_col=0) # 合并上下两层表头,空的下层表头直接沿用上层内容 merged_cols = [] for top_level, bottom_level in df.columns: if pd.isna(bottom_level): merged_cols.append(top_level) else: # 可自定义拼接符,比如空格、换行符\n merged_cols.append(f"{top_level} {bottom_level}") df.columns = merged_cols # 执行原有转换逻辑 df = df.swapaxes(axis1="index", axis2="columns") return df.set_index('Product Code')
方案2:保留MultiIndex结构(适合需要层级查询的场景)
def get_sheet_data(sheet_name='SomeName'): df = pd.read_excel(f'{full_q_name}', sheet_name=sheet_name, header=[0,1], index_col=0) # 转置后保留MultiIndex结构 df = df.T df.index = pd.MultiIndex.from_tuples(df.index, names=['header_level1', 'header_level2']) # 按需求设置索引,注意Product Code对应的层级位置 return df.set_index(('header_level1', 'Product Code'))
内容的提问来源于stack exchange,提问作者imp
相关产品推荐
相关产品推荐

