2016-09-14 2154 views
1

假設我有以下數據幀中df在pandas中,如何選擇包含NaN的行?

a  | b  | c 
------+-------+------- 
5  | 2  | 4 
NaN | 6  | 8 
5  | 9  | 0 
3  | 7  | 1 

如果我這樣做df.loc[df['a'] == 5]它會正確地返回第一和第三排,但這時如果我做了df.loc[df['a'] == np.NaN]它沒有返回值。

我認爲這是一個比熊貓更蟒蛇的東西。如果我將np.nan與任何東西比較,即使np.nan == np.nan將評估爲False,所以問題是,我應該如何測試np.nan

+3

目標是有點複雜,但基本上你做的空用'DF [ '一']檢查ISNULL()'或'pd.isnull(DF。 [ '一'])'。然後選擇很容易:'df [df ['a']。isnull()]' – ayhan

+1

你可以使用numpy.isnan(),它給你一個與輸入數組相同形狀的布爾數組。 – dnalow

+2

一般來說,我會避免在DataFrame上使用'np.isnan'。它不像'pd.isnull'那樣健壯,它具有相同的功能。例如,比較當df = pd.DataFrame({'a':[]')時嘗試使用'np.isnan(df ['a'])'與'pd.isnull(df ['a']) 'x',np.nan,'y']})'。 – root

回答

3

嘗試使用ISNULL像這樣:

import pandas as pd 
    import numpy as np 

    a=[1,2,3,np.nan,5,6,7] 
    df = pd.DataFrame(a) 

    df[df[0].isnull()]