У меня есть два фрейма данных, как показано ниже.
таблица пользователей: сведения о курсах и модулях, посещаемых каждым пользователем.
user_id courses. Num_of_course attended_modules Total_Modules
1 [A] 1 {A:[1,2,3,4,5,6]} 6
2 [A,B,C] 3 {A:[8], B:[5], C:[6]} 3
3 [A,B] 2 {A:[2,3,9], B:[10]} 4
4 [A] 1 {A:[3]} 1
5 [B] 1 {B:[5]} 1
6 [A] 1 {A:[3]} 1
7 [B] 1 {B:[5]} 1
8 [A] 1 {A:[4]} 1
Таблица курсов: сведения о курсах и все Модули этого курса и популярные модули.
course_id modules #users Popular_modules
A [1,2,3,4,5,6,8,9] 5 [3,2]
B [5,8] 4 [5]
C [6,10] 2 []
Из приведенных выше таблиц сравните два столбца и модули, которые должны присутствовать, и предложите модули для каждого пользователя, посещаемые автоматически.
- Предложить популярный модуль в посещаемом курсе, если пользователь еще не посещал этот модуль.
- Предложите необслуживаемый модуль в текущих курсах в порядке, указанном в таблице курсов.
- Предложите 3 модуля всем пользователи из всех курсов, которые он посещал, если в этом курсе доступно 3 модуля.
Ожидаемый результат:
user_id courses. Recommended_modules
1 [A,B] {A:[8,9]}
2 [A,B,C] {A:[3,2,1], B:[8], C:[10]}
3 [A,B] {A:[1,4,5], B:[5,8]}
4 [A] {A:[2,1,4]}
5 [B] {B:[8]}
6 [A] {A:[2,1,4]}
7 [B] {B:[8]}
8 [A] {A:[3,2,1]}
РЕДАКТИРОВАТЬ:
Добавлен user_id = 9 (последняя строка)
user_id courses. Num_of_course attended_modules Total_Modules
1 [A] 2 {A:[1,2,3,4,5,6]} 6
2 [A,B,C] 3 {A:[8], B:[5], C:[6]} 3
3 [A,B] 2 {A:[2,3,9], B:[10]} 4
4 [A] 1 {A:[3]} 1
5 [B] 1 {B:[5]} 1
6 [A] 1 {A:[3]} 1
7 [B] 1 {B:[5]} 1
8 [A] 1 {A:[4]} 1
9 [A] 1 {A:[1,2,3,4,5,6,8,9], B:[5]} 8
Вывод вышеуказанного кода:
user_id courses. Recommended_modules
1 [A] {A:[8,9]}
2 [A,B,C] {A:[3,2,1], B:[8], C:[10]}
3 [A,B] {A:[1,4,5], B:[5,8]}
4 [A] {A:[2,1,4]}
5 [B] {B:[8]}
6 [A] {A:[2,1,4]}
7 [B] {B:[8]}
8 [A] {A:[3,2,1]}
9 [A,B] {A:[], B:[8]}
Где в Recommended_modules for user_id = 9, курс A имеет пустой список
ie {A: [], B: [8]} ожидается {B: [8]}
Ожидаемый результат:
user_id courses. Recommended_modules
1 [A] {A:[8,9]}
2 [A,B,C] {A:[3,2,1], B:[8], C:[10]}
3 [A,B] {A:[1,4,5], B:[5,8]}
4 [A] {A:[2,1,4]}
5 [B] {B:[8]}
6 [A] {A:[2,1,4]}
7 [B] {B:[8]}
8 [A] {A:[3,2,1]}
9 [A,B] {B:[8]}