当前位置: 代码迷 >> python >> 使用 row 函数获取 nan。 但是,在将行与 nan 进行比较时,条件变得 False
  详细解决方案

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

热度:65   发布时间:2023-07-16 10:08:19.0

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

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

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

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

任何人都可以帮忙

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

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

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

将返回False

要检查变量是否为nan ,最好使用 。

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

相反,为此目的使用提供的运算符:

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

您的 if 语句评估为 False 因此不会执行进一步的部分。 这是因为nan == nan评估为 False 因为 nan (不是数字)未定义,您无法比较未定义的内容。 试着改变你的逻辑或使用isna() fillna()函数。

  相关解决方案