2014-01-18 166 views
8

所有行我有一個表,在它有一些NaN值列:掌握的NaN值

A B C D 
2 3 2 Nan 
3 4 5 5 
2 3 1 Nan 

我想獲得的所有行d = NaN的。我怎樣才能做到這一點?

+0

數據是熊貓數據框還是csv文件? –

+0

數據位於CSV文件中。 – MJP

回答

20

創建用於說明(含有楠)

In [86]: df =pd.DataFrame({'a':[1,2,3],'b':[3,4,5],'c':[np.nan, 4,5]}) 

In [87]: df 
Out[87]: 
    a b c 
0 1 3 NaN 
1 2 4 4 
2 3 5 5 

檢查該指數具有空值列c

In [88]: pd.isnull(df['c']) 
Out[88]: 
0  True 
1 False 
2 False 
Name: c, dtype: bool 

檢查哪個索引不具有空對於列c一個DF

In [90]: pd.notnull(df['c']) 
Out[90]: 
0 False 
1  True 
2  True 
Name: c, dtype: bool 

選擇df的行,其中c不爲空

In [91]: df[pd.notnull(df['c'])] 
Out[91]: 
    a b c 
1 2 4 4 
2 3 5 5 

選擇DF的行,其中c爲null

In [93]: df[pd.isnull(df['c'])] 
Out[93]: 
    a b c 
0 1 3 NaN 

選擇DF的列c的行,其中c是不爲空

In [94]: df['c'][pd.notnull(df['c'])] 
Out[94]: 
1 4 
2 5 
Name: c, dtype: float64 
0

對於不涉及大熊貓的溶液中,你可以這樣做:

goodind=np.where(np.sum(np.isnan(y),axis=1)==0)[0] #indices of rows non containing nans 

(或否定,如果你想要nan的行)並使用索引來切片數據。 我不確定sum是結合布爾值的最佳方法,但np.anynp.all似乎沒有axis參數,所以這是我找到的最佳方式。