Каков правильный синтаксис при использовании.notnull() в Пандах?
Я хочу использовать .notnull()
на нескольких столбцах фрейма данных, чтобы исключить строки, содержащие значения "NaN".
скажем у меня есть следующие df
:
A B C
0 1 1 1
1 1 NaN 1
2 1 NaN NaN
3 NaN 1 1
Я пытался использовать этот синтаксис, но это не работает? знаешь, что я делаю не так?
df[[df.A.notnull()],[df.B.notnull()],[df.C.notnull()]]
Я получаю эту ошибку:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
что я должен сделать, чтобы получить следующие результаты?
A B C
0 1 1 1
есть идеи?
2 ответов
вы можете сначала выбрать подмножество столбцов по df[['A','B','C']]
, а затем применить notnull
и выбрать all
значения в маски True
:
print (df[['A','B','C']].notnull())
A B C
0 True True True
1 True False True
2 True False False
3 False True True
print (df[['A','B','C']].notnull().all(1))
0 True
1 False
2 False
3 False
dtype: bool
print (df[df[['A','B','C']].notnull().all(1)])
A B C
0 1.0 1.0 1.0
другое решение-с Ayhan
комментарий dropna
:
print (df.dropna(subset=['A', 'B', 'C']))
A B C
0 1.0 1.0 1.0
что же, что:
print (df.dropna(subset=['A', 'B', 'C'], how='any'))
и означает падение всех строк, где есть хотя бы один NaN
значение.