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

如何用Pandas逐单元格遍历电子表格并查找空白单元格?

用Pandas定位Excel中的空白单元格

你的代码存在两个关键问题:

  • df.items()遍历的是DataFrame的列,每次返回的是(列名称, 列数据Series)的元组,不是单个单元格,无法直接判断单元格是否为空
  • Excel中的空白单元格读入Pandas后,默认会被解析为pd.NA(或np.nan),而非空字符串"",因此你的判断条件无法匹配到目标单元格

以下是正确的实现方式:

步骤1:导入依赖并读取Excel文件

import pandas as pd

excel_file = "<file name>"
df = pd.read_excel(excel_file)

步骤2:定位所有空白单元格

场景1:仅识别Pandas默认解析的空值(Excel空白单元格)

# 获取所有空白单元格的(行索引, 列名/列索引)坐标列表
blank_cells = list(df.isna().stack()[lambda x: x].index)

场景2:同时识别空字符串和Pandas空值

如果你的Excel中存在单元格内容为空字符串(而非真正的空白单元格),可以先将空字符串统一转为Pandas空值,再进行筛选:

# 将空字符串替换为Pandas空值
df = df.replace("", pd.NA)
# 筛选所有空白/空字符串单元格的坐标
blank_cells = list(df.isna().stack()[lambda x: x].index)

代码说明

  • df.isna():生成与原DataFrame尺寸一致的布尔矩阵,True表示对应位置为空值
  • .stack():将列索引转为二级索引,把二维结构转换为一维Series,索引为(行索引, 列索引/列名),值为布尔判断结果
  • [lambda x: x]:筛选出值为True的行,即空白单元格的位置
  • list(...):将筛选后的索引转换为列表,每个元素是一个元组,例如(0, '姓名')或(2, 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:42:08