Фильтрация по окну на фрейме pyspark - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу взять все предыдущие строки в наборе данных, которые соответствуют определенным критериям (сгруппированы по «столбцу1»), и вычислить среднее значение для класса, например:

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))

IЯ хотел добавить фильтр внутри окна и получить что-то вроде: я хочу, чтобы meanClassOverColumn1 имел среднее значение класса для строк с одинаковым значением в column1, но отфильтровал строки со значением column2 ==.Как я могу это сделать?(просто и без создания нескольких вспомогательных столбцов в процессе)

А что, если я хочу вычислить среднее значение "class" для предыдущего месяца?Обратите внимание, что я не говорю о предыдущих 30 днях, я фактически говорю о предыдущем месяце, поэтому, если в этой строке указана дата 6 февраля, я хочу вычислить среднее значение «класс» для января, и это будет то же самое, еслив строке была дата 13 февраля.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...