Pyspark 获取系列的第一次/最后一次出现的日期

Pyspark 获取系列的第一次/最后一次出现的日期,pyspark,spark-dataframe,pyspark-sql,Pyspark,Spark Dataframe,Pyspark Sql,这个问题的标题不清楚,但我不知道如何表述。。。 我有一个数据框,它每分钟解释一次滑雪时是否有队列 数据帧包含2列: -分钟=我们正在查看的分钟数 -如果此时有队列,则队列=1,否则为0 例: 从08h00到10h00,每行将0放入“队列” 从10h01到10h45,每行将1放入“队列” 从10h46到14h00,每行将0放入“队列” 从14h01到14h45,每行将1放入“队列” 从10h45到17h30,每行0进入“队列” 我想创建一个包含2列的新数据框 ------------------

这个问题的标题不清楚,但我不知道如何表述。。。 我有一个数据框,它每分钟解释一次滑雪时是否有队列

数据帧包含2列: -分钟=我们正在查看的分钟数 -如果此时有队列,则队列=1,否则为0

例:

从08h00到10h00,每行将0放入“队列”
从10h01到10h45,每行将1放入“队列”
从10h46到14h00,每行将0放入“队列”
从14h01到14h45,每行将1放入“队列”
从10h45到17h30,每行0进入“队列”
我想创建一个包含2列的新数据框

----------------------
开始|结束
----------------------
10h01 | 10h45
14h01 | 14h45
我成功地获得了如下数据帧:

----------------------
开始|结束
----------------------
10h01 |无
无| 10h45
14h01 |无
无| 14h45
使用:

df2=df.withColumn('start',F.when((F.col(“Prev_Queue”)==0)和(F.col(“Queue”)==1),F.col('NextMin')。否则(无))
df2=df2。带列('end',F.when((F.col(“Next_Queue”)==0)和(F.col(“Queue”)==1),F.col('NextMin')。否则(无))
其中,“Prev_Queue”是前一分钟的队列值,“Next_Queue”是下一分钟的队列值

关于如何获取我想要的数据帧(从我设法获取的数据帧或以更简单的方式获取的数据帧)有什么想法吗?
提前感谢:-)

我得到了同事的帮助;-)

关于信息,我还有一个专栏,“skilift”,包含我感兴趣的skilift的名称

以下是解决方案:

w = Window.partitionBy('Skilift').orderBy('Minute')
df = df.withColumn("rnk", F.when(F.lag('Queue').over(w) != F.col('Queue'), 1).otherwise(0))\
.withColumn('rnk2', F.sum('rnk').over(w))

df.where("queue = 1").groupBy('skilift','rnk2').agg(F.min('Minute'), F.max('Minute')).drop('rnk2').drop('rnk').show(truncate=False)