You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多组重复表头表格合并为低维DataFrame?求解代码卡点

解决横向重复表头Excel转规整二维表格的Pandas方案

核心思路

原Excel为横向排列的多组重复表头模块(每组含姓名、性别、部门、工资4列),通过拆分模块-统一表头-堆叠合并的方式,将分散的横向数据转换为每行对应一位员工的规整表格。

完整代码实现

import pandas as pd

# 读取目标Excel文件
df = pd.read_excel('./重新合并列表.xlsx', sheet_name='结果2')

# 清理表格中的全空行与全空列,排除无效空白干扰
cleaned_df = df.dropna(how='all').dropna(how='all', axis=1)

# 计算横向存在的重复模块数量(每组固定4列)
module_count = cleaned_df.shape[1] // 4

# 定义统一的标准表头
standard_headers = ['姓名', '性别', '部门', '工资']
# 存储每个模块的处理后数据
module_data_list = []

# 遍历拆分每个横向模块
for i in range(module_count):
    # 截取当前模块的4列数据
    col_start = i * 4
    col_end = col_start + 4
    module_df = cleaned_df.iloc[:, col_start:col_end]
    # 为模块设置统一表头
    module_df.columns = standard_headers
    # 清理模块内的全空行
    module_df = module_df.dropna(how='all')
    # 将处理后的模块数据加入列表
    module_data_list.append(module_df)

# 堆叠所有模块数据,生成最终规整表格
final_employee_df = pd.concat(module_data_list, ignore_index=True)

# 输出结果并保存
print(final_employee_df)
final_employee_df.to_excel('./规整员工信息表.xlsx', index=False)

关键步骤说明

  • 空值清理:先清理全空行/列,避免拆分模块时引入无效空白列;每个模块内部再次清理全空行,过滤无数据的无效行。
  • 模块拆分:利用每组固定4列的特性,通过循环按列索引截取模块数据,确保每个模块的字段对应一致。
  • 堆叠合并:使用pd.concat将所有模块数据纵向堆叠,ignore_index=True重置行索引,保证最终表格索引连续唯一。

内容的提问来源于stack exchange,提问作者Constantine Theodore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:32:47