У меня есть датафрейм, как показано ниже:
User_ID Game_ID Liked Shared Category
1 11 Y N Music
1 11 Y N Music
1 22 Y Y Music
1 11 Y N Music
1 33 N N Dance
2 33 N Y Dance
2 44 Y Y Peace
2 11 N N Music
Мне нужно получить новый столбец Rating
со следующей логикой:
- Для определенного
User_ID
: Если для определенного Game_ID
оба значения Liked
и Shared
равны Y
, тогда Score = 2
, если любое из них равно Y
, тогда Score = 1
, иначе Score = 0
.
- Для конкретного
User_ID
: если Game_ID
повторяется более 2 раз, то Score = 2
, если 2 раза, то 1
, иначе Score = 0
.
Для определенного User_ID
: если Game_ID
принадлежит Category
, который является высшей категорией Score = 1
, иначе Score = 0
Например: User_ID = 1
, Top Category = Music
(поскольку его счетчик частоты равен 4 из 5), все категории Game_ID
в Music
для этого пользователя получат балл 1
.
Наконец, нам нужен совокупный балл для каждого User_ID
- Game_ID
.
Например: User_ID = 1
, Game_ID = 11
.
1) Liked / Shared = Любой из них Y
- Score = 1
2) Category
этого Game_ID
относится к высшей категории (музыка) для этого идентификатора пользователя, поэтому Score : 1
3) Game_ID
повторяется более двух раз для этого User_ID
- Score : 2
Совокупный балл: 1+1+2 = 4
Ниже ожидаемый результат:
User_ID Game_ID Like/Share Category Game_repeat Rating
1 11 1 1 2 4
1 22 2 1 0 3
1 33 0 0 0 0
2 33 1 0 0 1
2 44 2 0 0 2
2 11 0 0 0 0
ПРИМЕЧАНИЕ. В ожидаемом выводе важны только User_ID, Game_ID и Rating.
Остальные столбцы только для деталей.
Можете ли вы, друзья, помочь мне?