在pyspark的数据框上的窗口上过滤

时间:2019-02-26 15:23:49

标签: python pyspark apache-spark-sql

我想获取数据集上符合特定条件的所有前几行(按“ column1”分组)并计算该类的平均值,例如:

days = lambda i: i * 86400
windowSpec = Window.partitionBy(F.col("column1")).orderBy(F.col("time").cast('long')).rangeBetween(-days(100),0)
all_data = all_data.withColumn('meanClassOverColumn1', F.mean("class").over(windowSpec))

我想在窗口内添加一些过滤器,最后得到类似以下内容:我希望meanClassOverColumn1对column1上具有相同值的行具有类的平均值,但要过滤出column2 == value的行。 我怎样才能做到这一点? (只需在过程中创建多个辅助列即可)

如果我要计算上个月的“类别”平均值,该怎么办?请注意,我不是在说前30天,而是在说上个月,因此,如果该行的日期为2月6日,则我要计算一月的“类别”平均值,如果该行的日期为2月13日。

提前谢谢

0 个答案:

没有答案