如何在Pyspark中添加带有MIN和MAX函数的新列,并按数据分组?

问题描述

PySpark Dataframe:adbel DF

向数据框添加新列:

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

结果:

我正在尝试弄清楚如何将最小(日期)值保存在Start_Date中,将最大(日期)值保存在End_Date中,并按post_evar10和Type对最终数据帧进行分组。

我尝试过的内容:下面的代码可以工作,但想看看是否有更好的方法来这样做,并将数据限制在从START_DATE起60天

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

解决方案

以下内容如何?

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

相关文章