数据在数据框中显示为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导致输出结果不正确。
采用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