Индекс значений "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
можно по-разному использовать для удаления строк или столбцов. Проверьте эту документацию, чтобы иметь более глубокое понимание.