Как удалить строки, которые имеют все значения NaN для определенного значения в другом столбце?

#python #pandas

Вопрос:

У меня есть это df :

          CODE    MONTH_DAY TMAX_x
0        113250   01-01    nan
1        113250   01-02    nan
2        113250   01-03    nan
3        113250   01-04    nan
4        113250   01-05    nan
        ...     ...     ...
16975  47E94706   12-27    22.4
16976  47E94706   12-28    21.1
16977  47E94706   12-29    23.2
16978  47E94706   12-30    24.9
16979  47E94706   12-31    24.4

[16980 rows x 3 columns]
 

Я хочу удалить строки, которые имеют определенное кодовое значение в CODE столбце, только если ВСЕ их TMAX_x значения являются nan.

Например: Если ВСЕ строки, CODE равные 133250, имеют только значения nan TMAX_x , я должен удалить эти строки. (В TMAX_x столбце для определенного значения должны быть все значения nan CODE , если по крайней мере 1 значение отличается от nan, TMAX_x я не должен удалять ни одну строку).

Ожидаемый результат:

          CODE    MONTH_DAY TMAX_x
        ...     ...     ...
16975  47E94706   12-27    22.4
16976  47E94706   12-28    21.1
16977  47E94706   12-29    23.2
16978  47E94706   12-30    24.9
16979  47E94706   12-31    24.4
 

Заранее спасибо.

Ответ №1:

Вы можете использовать groupby followed filter для сохранения групп, которые имеют по крайней мере одно ненулевое значение в столбце TMAX_x:

 df.groupby('CODE').filter(lambda gp: gp.TMAX_x.notna().any())