pandas基於numpy,所以其中的空值nan和numpy.nan是等價的。numpy中的nan並不是空對象,其實際上是numpy.float64對象,所以我們不能誤認為其是空對象,從而用bool(np.nan)去判斷是否為空值,這是不對的。
-
可以判斷pandas中單個空值對象的方式:
- 利用
pd.isnull()
,pd.isna()
; - 利用
np.isnan()
; - 利用
is
表達式; - 利用
in
表達式。
- 利用
-
不可以用來判斷pandas單個空值對象的方式:
- 不可直接用==表達式判斷;
- 不可直接用bool表達式判斷;
- 不可直接用if語句判斷。
-
對於同時多個空值對象的判斷和處理:
- 可以用Series對象和DataFrame對象的any()或all()方法;
- 可以用numpy的any()或all()方法;
- 不可以直接用python的內置函數any()和all()方法;
- 可以用Series或DataFrame對象的dropna()方法剔除空值;
- 可以用Series或DataFrame對象的fillna()方法填充空值。
總結:
numpy.nan
是一個numpy.float64
的非空對象,所以不能直接用bool表達式去判斷,故一切依賴於布爾表達式的判斷方式都不行,比如if語句。- 對於pandas中空值的判斷,我們只能通過pandas或者numpy的函數和is表達式去判斷,不能用python的內置函數any或all判斷。