我正在按行编写复杂的规则,为此,我正在使用 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']):
