Как добавить новый столбец с функцией min и max в Pyspark и сгруппировать по данным? - PullRequest
0 голосов
/ 03 февраля 2020

PySpark Dataframe: adobeDF

enter image description here

Добавление новых столбцов в фрейм данных:

from pyspark.sql.window import Window
from pyspark.sql import functions as f
adobeDF_new = adobeDF.withColumn('start_date', f.col('Date')).withColumn('end_date', f.col('Date'))

Результат:

enter image description here

Я пытаюсь выяснить, как сохранить минимальные (Date) значения в start_date и max (Date) значения в end_Date и группирование окончательного кадра данных по post_evar10 и типу.

То, что я пробовал: приведенный ниже код работает, но хочу посмотреть, есть ли лучший способ сделать это, и ограничить данные до 60 дней с момента start_date

from pyspark.sql.window import Window
from pyspark.sql import functions as f
adobe_window = Window.partitionBy('post_evar10','Type').orderBy('Date')
adobeDF_new = adobeDF.withColumn('start_date', min(f.col('Date')).over(adobe_window)).withColumn('end_date', max(f.col('Date')).over(adobe_window))

1 Ответ

2 голосов
/ 03 февраля 2020

Как насчет следующего?

adobeDF.groupBy("post_evar10").agg(
    f.min("start_date").alias("min_start"),
    f.max("end_date").alias("max_end")
)
...