Python读取Excel DataFrame指定单元格时if非空判断不生效问题求助
问题原因
- 语法使用错误:
check is not (None, "[nan]")的实际语义是判断check是否与元组(None, "[nan]")为同一个内存对象,无论单元格取值是什么,该判断都会返回True,完全不符合「判断单元格值不属于空值范围」的需求。如果要做成员判断应该使用not in关键字,但该写法在这里仍不适用,因为pandas的空值类型和你写的字面量并不匹配。 - 空值类型识别错误:pandas读取Excel空单元格时默认会赋值为
NaN(Not a Number),属于numpy定义的浮点类型特殊值,既不是None也不是字符串"[nan]",且NaN存在不等于任何值(包括自身)的特性,普通的相等/不等判断对它无效。
修复方案
如果仅需要判断标准的pandas空值,直接使用pandas内置的空值判断函数即可:
import pandas as pd check = df.iat[1,13] # 读取指定单元格 if not pd.isna(check): print("cell is not empty") # 此处放入你需要执行的后续计算逻辑
如果你的表格中可能存在手动填写的字符串类空值(比如空字符串、"nan"、"[nan]"),可以扩展判断条件覆盖这类场景:
check = df.iat[1,13] if not pd.isna(check) and str(check).strip() not in ("", "nan", "[nan]"): print("cell is not empty")
内容的提问来源于stack exchange,提问作者Kimchi
相关产品推荐
相关产品推荐

