我正在尝试计算时间戳记录不一致的数据帧的加权(基于持续时间)移动平均值。 以下是df示例。
+-----+-------------------+
|value| date|
+-----+-------------------+
| 9.0|2017-03-15 11:42:00|
| 7.0|2017-03-16 13:02:00|
| 7.0|2017-03-16 19:02:00|
| 7.0|2017-03-16 21:38:00|
| 7.0|2017-03-16 21:58:00|
| 6.0|2017-03-18 10:07:00|
| 22.0|2017-03-18 12:21:00|
| 21.0|2017-03-20 23:21:00|
| 19.0|2017-03-21 10:21:00|
| 17.0|2017-03-04 11:01:00|
| 16.0|2017-03-09 18:41:00|
+-----+-------------------+
我尝试使用rangeBetween,但我认为只需要简单的平均
然后尝试对pyspark.sql.functions.window
使用w = window('date','7 days','5 minutes')
方法,并用udf
计算加权平均值,但是我什至无法计算简单的平均值,因为它要花很多时间才能计算出来。
w = window('date','7 days','5 minutes')
win = Window.partitionBy(w).orderBy(df['date'].asc())
new_df = df.withColumn('average',avg('value').over(win))
还建议我将表格转换为均匀分布的时间段。 您建议哪一个?为什么?如何进行滑动和填充? 我是pyspark的新手
谢谢