Hubans 2020-06-15 13:36 采纳率: 100%
浏览 1203
已采纳

数据显示是NaN,却不能通过判断是否是nan来选中

数据在数据框中显示为NaN,输出结果也是nan,却无法根据is np.nan选中。

input:data.iloc[1,:].mission_complete
output: nan
input: data.iloc[1,:].mission_complete == np.nan
output: False
input: data.iloc[1,:].mission_complete is np.nan
output:False
input: data.iloc[1,:].mission_complete == 'nan'
output: False

图片说明
我想要做的是,能够根据根据是否是NaN值来筛选:

data['if_mission_complete'] = data.apply(lambda x: 0 if x['mission_complete'] is np.nan or x['mission_complete'] >= 0.9 else 1, axis=1)

但是因为选中nan的值为False导致输出结果不正确。

  • 写回答

1条回答 默认 最新

  • 一个纠结的天蝎座 2020-06-15 15:28
    关注

    采用np.isnan()方法

    In [3]: import pandas as pd  
    
    In [4]: import numpy as np   
    
    In [5]: a_df = pd.DataFrame([[1, 3, np.nan], [3, 4, 5]]) 
    
    In [6]: a_df  
    Out[6]: 
       0  1    2
    0  1  3  NaN
    1  3  4  5.0
    
    In [7]: a_df.iloc[0, 2]  
    Out[7]: nan
    
    In [8]: np.isnan(a_df.iloc[0,2])   
    Out[8]: True
    
    In [9]: a_df.iloc[0, 1]
    Out[9]: 3
    
    In [10]: np.isnan(a_df.iloc[0,1])
    Out[10]: False
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊