Используйте производный столбец для группировки в зависимости от проверки.
mydf.groupBy(when(col("check").equalTo("do_aggregate"), ...).otherwise(monotonically_increasing_id)).agg(...)
Если у вас есть уникальный ключ в кадре данных, используйте его вместо monotonically_increasing_id
.