#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())