1. 程式人生 > >使用pandas.isnull(data)來判斷某一個數據data的值是否為NaN

使用pandas.isnull(data)來判斷某一個數據data的值是否為NaN

使用pandas讀取一個數據表,怎麼判斷表中的某一個數據data的值是否為nan呢?

import pandas as pd

mydf=pd.read_csv('mydata.csv')
print(mydf)
print('\n=================================')
mydf.iloc[1,2]=pd.np.nan
mydf.iloc[2,1]=pd.np.nan
print(mydf)
print('\n=================================')
print(mydf.iloc[2,1])
print(pd.np.nan)
print(mydf.iloc[2, 1] is pd.np.nan)#錯誤
print(mydf.iloc[2, 1] == pd.np.nan)#錯誤
print(pd.isnull(mydf.iloc[2, 1]))#正確,判斷某個資料是否是NaN
print(mydf.iloc[:,2].isnull())#正確,判斷series裡的值是否為NaN
print('\n=================================')
print(mydf.iloc[2, 2])
print(mydf.iloc[2, 2] is pd.np.nan)
print(mydf.iloc[2, 2] == pd.np.nan)
print(pd.isnull(mydf.iloc[2, 2]))#正確,判斷某個資料是否是NaN

output:

   user_id  order_id product_name
0        1      2001       snacks
1        2      2002        apple
2        3      2003       noodle
3        4      2004       mutton
4        5      2006        bread

=================================
   user_id  order_id product_name
0        1    2001.0       snacks
1        2    2002.0          NaN
2        3       NaN       noodle
3        4    2004.0       mutton
4        5    2006.0        bread

=================================
nan
nan
False
False
True
0    False
1     True
2    False
3    False
4    False
Name: product_name, dtype: bool

=================================
noodle
False
False
False

從上面的code snippet以及output可以看出,資料表‘mydata.csv’中第2行第1列 mydf.iloc[2, 1] 的值是NaN

但是使用 is 和 == 來判斷這個資料是否為NaN時,都無法得到正確的判斷結果

正確的方法是使用 pandas.isnull()這個介面來判斷

pd.isnull(mydf.iloc[2, 1])