我有一个数据帧,如下所示:
+-------+----------+-----+
|user_id| date|valor|
+-------+----------+-----+
| 1|2022-01-01| 0|
| 1|2022-01-02| 0|
| 1|2022-01-03| 1|
| 1|2022-01-04| 1|
| 1|2022-01-05| 1|
| 1|2022-01-06| 0|
| 1|2022-01-07| 0|
| 1|2022-01-08| 0|
| 1|2022-01-09| 1|
| 1|2022-01-10| 1|
| 1|2022-01-11| 1|
| 1|2022-01-12| 0|
| 1|2022-01-13| 0|
| 1|2022-01-14| -1|
| 1|2022-01-15| -1|
| 1|2022-01-16| -1|
| 1|2022-01-17| -1|
| 1|2022-01-18| -1|
| 1|2022-01-19| -1|
| 1|2022-01-20| 0|
+-------+----------+-----+
目标是使用valor作为基数计算用户id的分数,它将从3开始,在valor列the main problem here is that my score cant be under 1 and cant be over 5, so the sum bust always stay on the range and don't lose the last value so I can compute it right中增加或减少1.所以我期望的是:
+-------+----------+-----+-----+
|user_id| date|valor|score|
+-------+----------+-----+-----+
| 1|2022-01-01| 0| 3|
| 1|2022-01-02| 0| 3|
| 1|2022-01-03| 1| 4|
| 1|2022-01-04| 1| 5|
| 1|2022-01-05| 1| 5|
| 1|2022-01-06| 0| 5|
| 1|2022-01-07| 0| 5|
| 1|2022-01-08| 0| 5|
| 1|2022-01-09| 1| 5|
| 1|2022-01-10| -1| 4|
| 1|2022-01-11| -1| 3|
| 1|2022-01-12| 0| 3|
| 1|2022-01-13| 0| 3|
| 1|2022-01-14| -1| 2|
| 1|2022-01-15| -1| 1|
| 1|2022-01-16| 1| 2|
| 1|2022-01-17| -1| 1|
| 1|2022-01-18| -1| 1|
| 1|2022-01-19| 1| 2|
| 1|2022-01-20| 0| 2|
+-------+----------+-----+-----+
到目前为止,我已经做了一个窗口来对列valor进行排序,这样我可以跟踪序列中增加或减少的数量,并从valor中删除大于4的序列,但我不知道如何将valor_的和保持在范围(1:5)内:
+-------+----------+----+-----+------+
|user_id| date|rank|valor|valor_|
+-------+----------+----+-----+------+
| 1|2022-01-01| 0| 0| 0|
| 1|2022-01-02| 0| 0| 0|
| 1|2022-01-03| 1| 1| 1|
| 1|2022-01-04| 2| 1| 1|
| 1|2022-01-05| 3| 1| 1|
| 1|2022-01-06| 0| 0| 0|
| 1|2022-01-07| 0| 0| 0|
| 1|2022-01-08| 0| 0| 0|
| 1|2022-01-09| 1| 1| 1|
| 1|2022-01-10| 2| 1| 1|
| 1|2022-01-11| 3| 1| 1|
| 1|2022-01-12| 0| 0| 0|
| 1|2022-01-13| 0| 0| 0|
| 1|2022-01-14| 1| -1| -1|
| 1|2022-01-15| 2| -1| -1|
| 1|2022-01-16| 3| -1| -1|
| 1|2022-01-17| 4| -1| -1|
| 1|2022-01-18| 5| -1| 0|
| 1|2022-01-19| 6| -1| 0|
如你所见,这里的结果是not what I expected:
+-------+----------+----+-----+------+-----+
|user_id| date|rank|valor|valor_|score|
+-------+----------+----+-----+------+-----+
| 1|2022-01-01| 0| 0| 0| 3|
| 1|2022-01-02| 0| 0| 0| 3|
| 1|2022-01-03| 1| 1| 1| 4|
| 1|2022-01-04| 2| 1| 1| 5|
| 1|2022-01-05| 3| 1| 1| 6|
| 1|2022-01-06| 0| 0| 0| 6|
| 1|2022-01-07| 0| 0| 0| 6|
| 1|2022-01-08| 0| 0| 0| 6|
| 1|2022-01-09| 1| 1| 1| 7|
| 1|2022-01-10| 2| 1| 1| 8|
| 1|2022-01-11| 3| 1| 1| 9|
| 1|2022-01-12| 0| 0| 0| 9|
| 1|2022-01-13| 0| 0| 0| 9|
| 1|2022-01-14| 1| -1| -1| 8|
| 1|2022-01-15| 2| -1| -1| 7|
| 1|2022-01-16| 3| -1| -1| 6|
| 1|2022-01-17| 4| -1| -1| 5|
| 1|2022-01-18| 5| -1| 0| 5|
| 1|2022-01-19| 6| -1| 0| 5|
| 1|2022-01-20| 0| 0| 0| 5|