这是最后提到的Half表达式的输出:
row['dep']
Out[302]: nan
但是我在单元格17,5中没有得到BU。
if row['dep'] == 'nan':
local.Cells(17,5).Value = "BU"
任何人都可以帮忙
答案 0 :(得分:1)
在代码中说'nan'
时,您正在创建一个包含字母“ n”,“ a”和“ n”的字符串。语义值nan
在Python中没有表示为字符串。您可以将nan
设为float('nan')
。
由于nan
是一个特殊值而不是数字(顺便说一下,NaN就是这个数字的意思),因此您不能使用==
进行比较。
>>> float('nan') == float('nan')
将返回False
。
要检查变量是否为nan
,最好使用math.isnan。
答案 1 :(得分:0)
By definition
,NaN
无法进行任何值比较。无论左侧是什么,操作== NaN
都将返回False
。 NaN == NaN
是False
。
为此,请使用提供的运算符:
if isnan(row['dep']):
local.Cells(17,5).Value = "BU"
答案 2 :(得分:0)
您的if语句的计算结果为False,因此不执行其他部分。这是因为nan == nan
的计算结果为False,因为未定义nan(不是数字),并且您无法比较未定义的事物。尝试更改逻辑或使用isna()
,fillna()
函数。