Как удалить строки в pandas .DataFrame на основе значений в определенном наборе столбцов? - PullRequest
1 голос
/ 16 апреля 2020

Из приведенного ниже фрейма данных, как удалить все строки, в которых все столбцы [B, C, D] имеют нулевые значения?

Фрейм входных данных:

    A    B    C    D
0  20  NaN  2.0  NaN
1   3  1.0  NaN  2.0
2  44  4.0  NaN  NaN
3  67  NaN  NaN  NaN
4  52  3.0  2.0  NaN
5   8  NaN  NaN  NaN

Требуемый вывод:

    A    B    C    D
0  20  NaN  2.0  NaN
1   3  1.0  NaN  2.0
2  44  4.0  NaN  NaN
4  52  3.0  2.0  NaN

Ответы [ 3 ]

3 голосов
/ 16 апреля 2020

Давайте попробуем dropna

df=df.dropna(thresh=1)
1 голос
/ 16 апреля 2020

Лично я бы использовал pandas.DataFrame.dropna() метод с его параметрами how и subset. Код следующий.

>>> df = df.dropna(how='all', subset=['B', 'C', 'D'])
>>> print(df)
    A    B    C    D
0  20  NaN  2.0  NaN
1   3  1.0  NaN  2.0
2  44  4.0  NaN  NaN
4  52  3.0  2.0  NaN
1 голос
/ 16 апреля 2020

Вы можете посчитать (не NaN) значение по подмножеству столбцов:

df[df[['B', 'C', 'D']].count(axis=1) > 0]

Это дает, как и ожидалось:

    A    B    C    D
0  20  NaN  2.0  NaN
1   3  1.0  NaN  2.0
2  44  4.0  NaN  NaN
4  52  3.0  2.0  NaN

и фокусируется только на требуемых столбцах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...