Pandas如何正确读取包含合并单元格的Excel文件
Pandas 读取含合并单元格Excel文件解决方案
我正尝试使用Pandas读取一份包含合并单元格的Excel文件,期望得到指定样式的输出结果。目前已知可尝试使用
fillna()方法,但该方法存在适配问题:
- 两个合并单元格之间存在无规律的空行
- 表格第二列也存在随机空单元格,无法通过该方法得到正确结果
实现方案
不要直接对整表使用ffill()填充,需分列按分组逻辑控制填充范围,避免跨空行、跨合并区间的错误填充,具体代码如下:
import pandas as pd # 1. 读取Excel文件,openpyxl引擎支持识别xlsx格式的合并单元格 df = pd.read_excel("你的文件路径.xlsx", engine="openpyxl", header=None) # 2. 处理第一列(一级合并单元格) # 标记第一列非空位置,给每个合并区间打分组标签 df["group_first"] = df[0].notna().cumsum() # 仅在同一合并区间内填充,空行会自动断开分组,不会跨空行填充 df[0] = df.groupby("group_first")[0].transform(lambda x: x.ffill()) # 3. 处理第二列(二级合并单元格,存在随机空值) # 在一级分组的范围内给第二列的合并区间打标签,避免跨一级合并区间填充 df["group_second"] = df.groupby("group_first")[1].transform(lambda x: x.notna().cumsum()) df[1] = df.groupby(["group_first", "group_second"])[1].transform(lambda x: x.ffill()) # 4. 清理临时列,可选删除完全空白的行 df = df.drop(columns=["group_first", "group_second"]).dropna(how="all").reset_index(drop=True) # 导出结果 df.to_excel("输出文件路径.xlsx", index=False)
适配说明
- 方案通过分组标记控制填充范围,自动跳过无规律的整行空行,不会出现两个合并单元格跨空行填充的问题
- 第二列的填充被限制在对应一级合并单元格的范围内,不会将不同一级分类下的第二列内容错误填充,也不会修改本就为空的单元格
内容的提问来源于stack exchange,提问作者Satish
相关产品推荐
相关产品推荐

