Python 熊猫根据时间戳分配范围为5-1的点,最近的获取最大点

Python 熊猫根据时间戳分配范围为5-1的点,最近的获取最大点,python,pandas,Python,Pandas,在设计推荐系统时,我偶然发现了一个案例,在这个案例中,协同过滤的实现需要投票或类似的东西。 但在我们的系统中,我们没有任何用于评级/投票的字段。我愿意根据用户观看节目的时间戳推断类似的评分/投票 这就是历史视图的样子 subscriber_id content_id timestamp 1 123 1576833135000 1 124 1576833140000 1 125 1576833145000 1 126 1576833150000

在设计推荐系统时,我偶然发现了一个案例,在这个案例中,协同过滤的实现需要投票或类似的东西。 但在我们的系统中,我们没有任何用于评级/投票的字段。我愿意根据用户观看节目的时间戳推断类似的评分/投票

这就是历史视图的样子

subscriber_id  content_id      timestamp
1   123 1576833135000    
1   124 1576833140000    
1   125 1576833145000    
1   126 1576833150000    
1   127 1576833155000    
1   128 1576833160000    
1   129 1576833165000    
1   130 1576833170000    
1   131 1576833175000    
1   132 1576833180000    
2   123 1576833135000    
2   124 1576833140000    
2   125 1576833145000    
2   126 1576833150000    
2   127 1576833155000    
2   128 1576833160000    
2   129 1576833165000    
2   130 1576833170000    
2   131 1576833175000    
2   132 1576833180000    
2   133 1576833185000    
2   134 1576833190000    
2   135 1576833195000    
2   136 1576833200000    
2   137 1576833205000    
2   138 1576833210000    
2   139 1576833215000    
2   140 1576833220000    
2   141 1576833225000    
2   142 1576833230000    
2   143 1576833235000    
2   144 1576833240000  
我想为每个条目分配一个数字,范围从5-1(5是最新的),我已经实现了排名系统,但它不适用于该范围

df1['rank'] = df1.sort_values(['subscriber_id','timestamp']) \
                        .groupby(['subscriber_id'])['timestamp'] \
                        .rank(method='max').astype(int) 
预期产出:

subscriber_id  content_id      timestamp    rating
1   123 1576833135000       1
1   124 1576833140000       1
1   125 1576833145000       2
1   126 1576833150000       2
1   127 1576833155000       3
1   128 1576833160000       3
1   129 1576833165000       4
1   130 1576833170000       4
1   131 1576833175000       5
1   132 1576833180000       5
2   123 1576833135000       1
2   124 1576833140000       1
2   125 1576833145000       1
2   126 1576833150000       1
2   127 1576833155000       2
2   128 1576833160000       2
2   129 1576833165000       2
2   130 1576833170000       2
2   131 1576833175000       3
2   132 1576833180000       3
2   133 1576833185000       3
2   134 1576833190000       3
2   135 1576833195000       4
2   136 1576833200000       4
2   137 1576833205000       4
2   138 1576833210000       4
2   139 1576833215000       4
2   140 1576833220000       5
2   141 1576833225000       5
2   142 1576833230000       5
2   143 1576833235000       5
2   144 1576833240000       5

任何帮助都将不胜感激

现在它有意义了。解决方案是根据所选用户的数据数量除以5得到的模值创建列组列表。好了:)

结果:

   content_id subscriber_id      timestamp rating
0         123             1  1576833135000      1
1         124             1  1576833140000      1
2         125             1  1576833145000      2
3         126             1  1576833150000      2
4         127             1  1576833155000      3
5         128             1  1576833160000      3
6         129             1  1576833165000      4
7         130             1  1576833170000      4
8         131             1  1576833175000      5
9         132             1  1576833180000      5
10        123             2  1576833135000      1
11        124             2  1576833140000      1
12        125             2  1576833145000      1
13        126             2  1576833150000      1
14        127             2  1576833155000      2
15        128             2  1576833160000      2
16        129             2  1576833165000      2
17        130             2  1576833170000      2
18        131             2  1576833175000      3
19        132             2  1576833180000      3
20        133             2  1576833185000      3
21        134             2  1576833190000      3
22        135             2  1576833195000      4
23        136             2  1576833200000      4
24        137             2  1576833205000      4
25        138             2  1576833210000      4
26        139             2  1576833215000      4
27        140             2  1576833220000      5
28        141             2  1576833225000      5
29        142             2  1576833230000      5
30        143             2  1576833235000      5
31        144             2  1576833240000      5

您需要根据时间戳为每个订户分配从5到1的范围吗?例如:1 157683146491-->5、1 157111048752-->4等等?是的,但每个人的这些记录也可以超过5条,因此两条记录可以有相同的rankHave添加了预期输出。我不明白如何根据订户id和时间戳计算评级。为什么在第二个用户id的底部评级为1?你能举几个简单的例子吗?我还是看不出来。为什么用户nr 2没有5或4级,1和2级是9倍?
   content_id subscriber_id      timestamp rating
0         123             1  1576833135000      1
1         124             1  1576833140000      1
2         125             1  1576833145000      2
3         126             1  1576833150000      2
4         127             1  1576833155000      3
5         128             1  1576833160000      3
6         129             1  1576833165000      4
7         130             1  1576833170000      4
8         131             1  1576833175000      5
9         132             1  1576833180000      5
10        123             2  1576833135000      1
11        124             2  1576833140000      1
12        125             2  1576833145000      1
13        126             2  1576833150000      1
14        127             2  1576833155000      2
15        128             2  1576833160000      2
16        129             2  1576833165000      2
17        130             2  1576833170000      2
18        131             2  1576833175000      3
19        132             2  1576833180000      3
20        133             2  1576833185000      3
21        134             2  1576833190000      3
22        135             2  1576833195000      4
23        136             2  1576833200000      4
24        137             2  1576833205000      4
25        138             2  1576833210000      4
26        139             2  1576833215000      4
27        140             2  1576833220000      5
28        141             2  1576833225000      5
29        142             2  1576833230000      5
30        143             2  1576833235000      5
31        144             2  1576833240000      5