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

如何使用pandas有效读取Excel为DataFrame并填充合并单元格空值

pandas适配Excel合并单元格层级展示逻辑的实现方案

Excel里的合并单元格本质是只在区域首行存储实际值,其余行单元格留空,pandas默认读入时把空值识别为NA是正常现象,用向前填充逻辑就能1:1还原Excel的视觉展示效果,操作步骤如下:

  • 第一步:正常读入Excel文件,不需要修改默认读入参数
import pandas as pd
# 替换成你自己的文件路径,表头识别异常时可加header参数指定表头行位置
df = pd.read_excel("你的数据集文件.xlsx")

此时读入的DataFrame和你描述的结构一致,Columa_1仅第一行为Germany、其余行为NA,Column_2仅每个分类的第一行有值、对应子项行均为NA。

  • 第二步:按从高到低的层级顺序(即从最左列到右列的顺序),对存在合并单元格的列做向前填充

注意:绝对不能打乱列的填充顺序,也不要直接对全表做填充,否则会把非合并列的独立数值、文本错误覆盖。

针对你给出的数据集,仅前两列是合并展示的层级列,第三到第五列每行都有独立值,不需要填充,对应代码如下:

# 按层级从高到低排列需要填充的列名
level_cols = ["Columa_1", "Column_2"]
df[level_cols] = df[level_cols].ffill()

ffill()是pandas内置的向前填充方法,逻辑是逐行检测,遇到NA值就取上一行同列的非NA值填充,和Excel合并单元格的取值逻辑完全一致。

填充完成后得到的DataFrame结构如下,和Excel视觉展示的内容完全匹配:

Columa_1Column_2Column3Column4Column5
GermanyBusinessAutomobile32400text1
GermanyBusinessPesticide348700text2
GermanyBusinessChemisty97245text3
GermanyHomeworkCleaning56248text3
GermanyHomeworkCooking67354text4
GermanySchoolingattending78464text5

常见场景适配说明

  • 如果数据集中间存在无意义空行,先执行df = df.dropna(how="all")删除全空行,再做填充即可,避免空行导致填充值错位。
  • 如果层级列超过2列,只要把列名按从左到右的层级顺序加到level_cols列表里就行,逻辑完全通用。
  • 如果部分合并单元格存在空值需要保留,不要直接整列填充,可以先按业务逻辑筛选出需要填充的行区间再单独做ffill。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:27:16