使用行函数获取nan。但是,在将行与nan进行比较时,条件变为False

时间:2018-10-04 20:04:01

标签: python python-2.7

这是最后提到的Half表达式的输出:

row['dep']
Out[302]: nan

但是我在单元格17,5中没有得到BU。

if row['dep'] == 'nan':
     local.Cells(17,5).Value = "BU"

任何人都可以帮忙

3 个答案:

答案 0 :(得分:1)

在代码中说'nan'时,您正在创建一个包含字母“ n”,“ a”和“ n”的字符串。语义值nan在Python中没有表示为字符串。您可以将nan设为float('nan')

由于nan是一个特殊值而不是数字(顺便说一下,NaN就是这个数字的意思),因此您不能使用==进行比较。

>>> float('nan') == float('nan')

将返回False

要检查变量是否为nan,最好使用math.isnan

答案 1 :(得分:0)

By definitionNaN无法进行任何值比较。无论左侧是什么,操作== NaN都将返回FalseNaN == NaNFalse

为此,请使用提供的运算符:

if isnan(row['dep']):
     local.Cells(17,5).Value = "BU"

答案 2 :(得分:0)

您的if语句的计算结果为False,因此不执行其他部分。这是因为nan == nan的计算结果为False,因为未定义nan(不是数字),并且您无法比较未定义的事物。尝试更改逻辑或使用isna()fillna()函数。