使用pandas.isnull(data)來判斷某一個數據data的值是否為NaN
阿新 • • 發佈:2019-01-28
使用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])