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

如何读取Excel表单并提取指定字段生成Pandas DataFrame?

处理特殊结构Excel并生成目标DataFrame的方案

嘿,我来帮你搞定这个特殊Excel结构的读取问题!针对这种非标准表头、带合并单元格的Excel文件,我们可以通过分步处理提取需要的内容,生成符合要求的DataFrame。下面是具体的操作步骤和代码示例:

步骤1:读取原始数据,确认结构

首先我们先把整个Excel文件读进来,不预设表头,这样能清楚看到每一行每一列的原始内容,方便定位表头和数据的位置:

import pandas as pd

# 替换成你的Excel文件路径
file_path = "your_file.xlsx"
# 读取文件,不指定表头,保留所有原始行
df_raw = pd.read_excel(file_path, header=None)

# 打印前10行,查看表头和数据的分布(根据输出调整后续的行/列索引)
print(df_raw.head(10))

步骤2:处理合并单元格的info列

因为info列大概率是合并单元格,只有分组的第一行有值,下面的行是空的,我们需要用前向填充把空值补上,确保每个数据行都对应正确的info值:

# 假设`info`在第0列(根据实际结构调整列索引)
df_raw[0] = df_raw[0].ffill()

步骤3:提取目标列并设置表头

根据你的需求,我们只保留info以及Name到zipcode的列,去掉Scope Changes和amt相关内容:

# 1. 定位表头所在行(比如表头在第2行,对应索引1,根据你的实际输出调整)
header_row = 1

# 2. 收集目标表头:info + Name到zipcode的列名
# 这里假设Name到zipcode在第2列到第10列(索引2到10),根据实际情况修改范围
target_columns = [df_raw.loc[header_row, 0]] + list(df_raw.loc[header_row, 2:10])

# 3. 提取对应的数据行和列(数据从表头行的下一行开始,比如索引2之后)
df_target = df_raw.loc[2:, [0] + list(range(2, 11))]

# 4. 设置新的表头
df_target.columns = target_columns

步骤4:清理数据并生成最终DataFrame

最后我们过滤掉空行,重置索引,就能得到你想要的结构了:

# 移除全为空的行
df_target = df_target.dropna(how="all")

# 重置索引
df_target = df_target.reset_index(drop=True)

# 查看最终结果
print(df_target.head())

关键注意事项

  • 一定要根据你打印的df_raw.head(10)输出,调整表头行索引和目标列的范围,比如如果Name在第3列(索引2),zipcode在第12列(索引11),那列范围就要改成2:12。
  • 如果你的Excel有多个工作表,记得用pd.ExcelFile指定工作表:xls = pd.ExcelFile(file_path); df_raw = xls.parse("Sheet1")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:05:24