У меня есть датафрейм (pyspark.sql.dataframe.DataFrame
) user_recs
типа DataFrame[user: int, recommendations: array<struct<item:int,rating:float>>]
.
Я хочу выбрать для каждого пользователя лучшую rating
и соответствующую ей item
.
Например, для номера пользователя 471
у меня есть следующий ряд
user_recs.where(user_recs.user == 471).select("recommendations.item", "recommendations.rating").collect()
>>>[Row(item=[0, 23, 4], rating=[0.005226806737482548, 0.0044402251951396465, 0.004139747936278582])]
Я хочу, чтобы результатом был кадр данных, аналогичный user_recs
, но с максимальным рейтингом. Я хочу, чтобы число item
было равно 0, поскольку его лучший рейтинг равен 0,005 *. (Рейтинг также должен быть включен в фрейм данных.