【发布时间】:2022-01-01 12:21:26
【问题描述】:
我需要为每个 ID 和行计算最后 3 个时期的平均值(不包括当前时期(我将输入相同的值)并管理该时期没有其他 3 个次要时期的情况)。
例如:
输入:
| ID | $ | TIME |
|---|---|---|
| 1 | 100 | 20/11/2021 |
| 1 | 200 | 17/11/2021 |
| 1 | 150 | 15/11/2021 |
| 1 | 170 | 10/11/2021 |
| 1 | 130 | 05/11/2021 |
| 2 | 200 | 20/11/2021 |
| 2 | 200 | 17/11/2021 |
输出:
| ID | $ | TIME | MEAN ($) |
|---|---|---|---|
| 1 | 100 | 20/11/2021 | (200+150+170)/3 = 173.33* |
| 1 | 200 | 17/11/2021 | (150+170+130)/3 = 150 |
| 1 | 150 | 15/11/2021 | ... |
| 1 | 170 | 10/11/2021 | ... |
| 1 | 130 | 05/11/2021 | ... |
| ... | ... | ... | ... |
| 2 | 200 | 20/11/2021 | 200 |
| 2 | 150 | 17/11/2021 | ... |
是否有一个窗口函数来制作它?我希望我不必使用循环:) 感谢您的宝贵帮助!
【问题讨论】:
-
为什么第 1 行的平均值等于 100?不应该是 (200+150+170)/3 吗?
-
我错了……现在我已经更正了!谢谢你
-
每组的最后三行应该和
$一样,对吗? -
是的,正确!你能帮我吗? :)
标签: python pyspark window rows between