问题描述
这是最后提到的 half 表达式的输出:
row['dep']
Out[302]: nan
但是,我没有在单元格 17,5 中获得 BU。
if row['dep'] == 'nan':
local.Cells(17,5).Value = "BU"
任何人都可以帮忙
1楼
当您在代码中说'nan'
时,您正在创建一个包含字母“n”、“a”和“n”的字符串。
语义值nan
在 Python 中不表示为字符串。
您可以将nan
设为float('nan')
。
由于nan
是一个特殊值而不是数字(顺便说一下,这就是 NaN 的字面意思),因此您不能使用==
进行比较。
>>> float('nan') == float('nan')
将返回False
。
要检查变量是否为nan
,最好使用 。
2楼
By definition
, NaN
无法进行任何值比较。
无论左侧是什么,操作== NaN
都将返回False
。
NaN == NaN
是False
。
相反,为此目的使用提供的运算符:
if isnan(row['dep']):
local.Cells(17,5).Value = "BU"
3楼
您的 if 语句评估为 False 因此不会执行进一步的部分。
这是因为nan == nan
评估为 False 因为 nan (不是数字)未定义,您无法比较未定义的内容。
试着改变你的逻辑或使用isna()
fillna()
函数。