Индекс значений "NaN" в Pandas

Из фрейма данных Pandas, как получить индекс значений "NaN"?

Мой кадр данных

    A    b     c
0   1    q1    1
1   2    NaN   3
2   3    q2    3
3   4    q1    NaN
4   5    q2    7

И я хочу индекс строк, в которых столбец b не является NaN. (в другом столбце могут быть значения NaN, например c)

non_nana_index = [0,2,3,4]

Используя этот индексный список "NaN", я хочу создать новый кадр данных, в столбце b не будет "Nan"

df2 =

    A    b     c
0   1    q1    1
1   3    q2    3
2   4    q1    NaN
3   5    q2    7

Ответ 1

Просто отфильтруйте их

In [62]:

df['b'].notnull()

Out[62]:
0     True
1    False
2     True
3     True
4     True
Name: b, dtype: bool
In [63]:

df[df['b'].notnull()]
Out[63]:
   A   b   c
0  1  q1   1
2  3  q2   3
3  4  q1 NaN
4  5  q2   7

Ответ 2

У DataFrames есть метод dropna:

import pandas
import numpy

d = pandas.DataFrame({'A': [1, 2, 3, numpy.nan], 
                      'b': [1, 2, numpy.nan, 3],
                      'c': [1, numpy.nan, 2, 3]})
d.dropna(subset=['b'])

Ответ 3

Метод dropna можно по-разному использовать для удаления строк или столбцов. Проверьте эту документацию, чтобы иметь более глубокое понимание.