2014-01-18 5 views
8

У меня есть таблица с колонкой, которая имеет некоторые значения NaN в нем:Получение всех строк со значением NaN

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

Я хотел бы получить все строки, где D = NaN. Как я могу это сделать?

+0

Являются ли данные в кадре данных pandas или csv-файле? –

+0

Данные находятся в файле CSV. – MJP

ответ

20

Создание пеленгации для иллюстрации (содержащего Nan)

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 

Checking, какие индексы имеют нуль для столбца с

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

Checking каких индексы не имеют нуль для столбца с

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 

Выбор строк ДФ где с нулевым

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

Выбор строк столбца с ФР, где с не нулевой

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.any и np.all, похоже, не имеют параметра axis, так что это лучший способ найти.

Смежные вопросы