【发布时间】:2023-03-27 00:20:01
【问题描述】:
我有一个代表分数时间序列的 Pandas DataFrame。我想使用该分数根据以下标准计算 CookiePoints 列:
- 与之前的分数相比,每次分数提高时,都会给出一个 CookiePoint。
- 每次分数没有提高,所有的CookiePoints都会被拿走作为惩罚(CookiePoints设置为0)。
- 3 Cookiepoints 可以换成 Cookie。因此,达到 3 后,CookiePoints 计数应为 1(如果得分较高)或 0(如果得分不较高)。
示例如下:
Score CookiePoints
14 0
13 0
14 1
17 2
17 0
19 1
20 2
22 3
23 1
17 0
19 1
20 2
22 3
21 0
请注意,这是minimal, reproducible example。解决方案必须使用 Pandas DataFrame,并且最好只使用矢量化操作。
【问题讨论】:
-
你有当前的非向量化实现吗?
-
这基本上是一个动态的 cumsum(在这种情况下是一列 1),我认为它不能被矢量化。见stackoverflow.com/questions/54208023/…
-
我昨天遇到的另一个链接:stackoverflow.com/questions/56904390/…
-
@KevinWinata 没有。所以这也会有帮助。感谢 ALollz 和 anky_91 的链接 - 我现在正在阅读这些链接。