2014-01-18 231 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参数,所以这是我找到的最佳方式。