movie_id user_id rating
0 1 [5, 2, 1, 6] [4, 4, 5, 4]
1 2 [5, 1] [3, 3]
2 3 [1] [4]
3 4 [1] [3]
4 5 [1] [3]
5 6 [1] [5]
6 7 [6, 1] [2, 4]
7 8 [1, 6] [1, 4]
8 9 [1, 6] [5, 4]
Я пытаюсь получить количество чисел в «рейтинге», которые больше 3 для каждой строки.Например, [4, 4, 5, 5] => 4 / [3, 3] => 0.
Вот что я сделал до сих пор:
appr = df.copy()
appr['approval'] = appr['rating'].map(Counter)
appr
Ион выводит:
movie_id user_id rating approval
0 1 [5, 2, 1, 6][4, 4, 5, 4] {4: 3, 5: 1}
1 2 [5, 1] [3, 3] {3: 2}
2 3 [1] [4] {4: 1}
3 4 [1] [3] {3: 1}
4 5 [1] [3] {3: 1}
5 6 [1] [5] {5: 1}
6 7 [6, 1] [2, 4] {2: 1, 4: 1}
7 8 [1, 6] [1, 4] {1: 1, 4: 1}
8 9 [1, 6] [5, 4] {5: 1, 4: 1}
Моя цель состоит в том, чтобы отфильтровать числа, которые не превышают 3 в рейтинге, для каждой строки и суммировать их появление:
movie_id user_id rating approval appr_sum
0 1 [5, 2, 1, 6][4, 4, 5, 4] {4: 3, 5: 1} 4
1 2 [5, 1] [3, 3] {3: 2} 0
2 3 [1] [4] {4: 1} 1
3 4 [1] [3] {3: 1} 0
4 5 [1] [3] {3: 1} 0
5 6 [1] [5] {5: 1} 1
6 7 [6, 1] [2, 4] {2: 1, 4: 1} 1
7 8 [1, 6] [1, 4] {1: 1, 4: 1} 1
8 9 [1, 6] [5, 4] {5: 1, 4: 1} 2
I 'мы попробовали:
s = appr['rating'].map
t = [x for x in s if x > 3]
t
Но есть TypeError
: объект 'method' не повторяется, и если эта часть кода получилась правильной, это не суммирует их появление.