Skip to main content
 首页 » 编程设计

python之Pandas之如何在应用函数内识别 nans

2025年05月04日10jirigala

我正在按行编写复杂的规则,为此,我正在使用 df.apply。在此函数内部,条件之一是检查列 MEASUREMENT 中的值之一是否为空白/空/nan。我该怎么做呢?这看起来真的很容易,但我无法让它工作。我知道我可以使用其他矢量化方法来检查 nans,但我需要编写复杂的规则,所以我正在使用 df.apply。

我的数据如下:

MEASUREMENT VALUE 
Name1       0.1 
Name2       0.2 
            0.3 
Name4       0.2 
231         0.4 

我的代码是这样的

func(row): 
   if row['MEASUREMENT'] == np.NaN: 
       print row['VALUE'] 
 
new_df = df.apply(func, axis=1) 

它应该打印 0.3。

注意事项: MEASUREMENT 列具有混合数据类型。我已经尝试将其加载为 str 并默认加载,但条件仍然无效。我在安装 Anaconda 时使用的是 Python 3.7。

我已经尝试了所有方法,但无法找到解决方案。任何帮助将不胜感激。

请您参考如下方法:

NaN 不等于任何值,包括它自己。所以您可以这样检查:

if row['MEASUREMENT'] != row['MEASUREMENT']: 

但是,在已知值是数字的情况下,更好(即更易读)的方法是 math.isnan()。

from math import isnan 
if isnan(row['MEASUREMENT']):