Это довольно прямой вопрос, скажем, у меня есть:
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. Если возможно, я хотел также указать номер строки.
Есть идеи? Простой фильтр не сработает, потому что я не ищу что-то, что соответствует двум условиям. Я думал о написании функции, но это было бы слишком много работы (сначала я бы перечислил все нулевые значения и сохранил их в списке, а затем получил бы минимум из фрейма данных, отфильтровав только те, которые есть в списке).
это возвращает фрейм данных с одной строкой, удовлетворяющей заданным условиям
df1=df[df['id']==NULL]
df1[df1['grade']==df1['grade'].min()]
Попробуйте этот лайнер:
df.loc[df['id'].isna(), 'grade'].min()
Выход:
55
Используйте loc
с логическими последовательностями, где столбец, «id», isna
и получите значение min
для
столбец, «оценка».