Pandas – удалить строки только с значениями NaN

У меня есть DataFrame, содержащий много значений NaN. Я хочу удалить строки, содержащие слишком много значений NaN; в частности: 7 или более.

Я попытался использовать функцию dropna несколькими способами, но кажется ясным, что он жадно удаляет столбцы или строки, содержащие любые значения NaN.

Этот вопрос ( Slice Pandas DataFrame by Row ) показывает мне, что если я могу просто скомпилировать список строк с слишком большим количеством значений NaN, я могу удалить их с помощью простого

df.drop(rows) 

Я знаю, что могу подсчитать ненулевые значения, используя функцию count, которую я мог бы вычесть из суммы, и получить счет NaN таким образом (есть ли прямой способ подсчета значений NaN в строке?). Но даже в этом случае я не уверен, как писать цикл, который проходит через DataFrame по очереди.

Вот какой-то псевдокод, который, я думаю, на правильном пути:

 ### LOOP FOR ADDRESSING EACH row: m = total - row.count() if (m > 7): df.drop(row) 

Я все еще новичок в Pandas, поэтому я очень открыт для других способов решения этой проблемы; являются ли они более сложными или более сложными.

    2 Solutions collect form web for “Pandas – удалить строки только с значениями NaN”

    В основном способ сделать это – определить количество столбцов, установить минимальное количество значений non-nan и отбросить строки, которые не соответствуют этим критериям:

     df.dropna(thresh=(len(df) - 7)) 

    См. Документы

    Необязательный аргумент аргумента df.dropna позволяет указать минимальное количество значений, отличных от NA, чтобы сохранить строку.

     df.dropna(thresh=df.shape[1]-7) 
    Python - лучший язык программирования в мире.