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

Это довольно прямой вопрос, скажем, у меня есть:

id        grade     coldate
123       100       2020-01-01
444       45        2020-02-01
NULL      55        2020-03-01
NULL      70        2020-04-01

Я хочу, чтобы худшая оценка учитывалась только тогда, когда идентификатор равен нулю. Таким образом, несмотря на то, что 444 имеет более низкую оценку, чем идентификатор в третьей строке, результат, который я ожидаю, равен 55. Если возможно, я хотел также указать номер строки.

Есть идеи? Простой фильтр не сработает, потому что я не ищу что-то, что соответствует двум условиям. Я думал о написании функции, но это было бы слишком много работы (сначала я бы перечислил все нулевые значения и сохранил их в списке, а затем получил бы минимум из фрейма данных, отфильтровав только те, которые есть в списке).

0
0
429
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

это возвращает фрейм данных с одной строкой, удовлетворяющей заданным условиям

df1=df[df['id']==NULL]
df1[df1['grade']==df1['grade'].min()]
Ответ принят как подходящий

Попробуйте этот лайнер:

df.loc[df['id'].isna(), 'grade'].min()

Выход:

55

Используйте loc с логическими последовательностями, где столбец, «id», isna и получите значение min для столбец, «оценка».

Другие вопросы по теме