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

从单张Excel表提取多Table转为DataFrame并合并的技术求助

解决方案:Excel多Table转DataFrame并合并

基于你已有的分组代码,接下来可以按以下步骤完成Table转DataFrame及合并操作:

步骤1:按分组提取表头与数据

利用已生成的group_id,将每个分组内的第一行作为表头,剩余行作为数据内容。

步骤2:逐个分组转换为DataFrame

遍历每个分组,将表头设为列名,数据行转为DataFrame,可按需保留分组标识用于后续溯源。

步骤3:合并所有DataFrame

使用pd.concat合并所有DataFrame,自动处理列名匹配与不匹配的情况,不匹配列会填充NaN。

完整代码

import pandas as pd

# 读取Excel文件(沿用你的初始代码)
sheets = pd.read_excel(r"D:\PO-1473-Scaff-June22efff.xlsx", header=None)
sheets.dropna(axis=1, how="all", inplace=True)
sheets.dropna(subset=[2], inplace=True)
sheets["group_id"] = (sheets[0] == "SN").cumsum()

# 存储所有分组的DataFrame
dfs = []

# 遍历每个分组
for group_id, group_data in sheets.groupby("group_id"):
    # 提取表头(分组内第一行)
    header = group_data.iloc[0].tolist()
    # 提取数据行(分组内除第一行外的所有行)
    data_rows = group_data.iloc[1:]
    # 转换为DataFrame并设置列名
    df = pd.DataFrame(data_rows.values, columns=header)
    # 可选:添加分组ID列,方便后续溯源
    df["group_id"] = group_id
    dfs.append(df)

# 合并所有DataFrame
final_df = pd.concat(dfs, ignore_index=True)

# 查看合并结果
print(final_df.head())

关键说明

  • 分组内第一行被识别为表头的前提是:每个Table的起始行第一列值为SN(与你设置group_id的逻辑一致)
  • pd.concat会自动对齐相同列名,不同列名的字段会保留并填充NaN,适配部分匹配列的场景
  • 若需对不匹配列做特殊处理(比如填充默认值),可在合并后使用final_df.fillna()操作

内容的提问来源于stack exchange,提问作者Ali khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:55:18