如何利用窗口函数计算pyspark中的日期差?

2024-09-27 00:18:05 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试计算自用户首次开始使用应用程序以来经过的天数以及df行表示的事件。下面的代码(via)创建了一个列,将该行与前一行进行比较,但我需要将它与分区的第一行进行比较。你知道吗

window = Window.partitionBy('userId').orderBy('dateTime')

df = df.withColumn("daysPassed", datediff(df.dateTime, 
                                lag(df.dateTime, 1).over(window)))

尝试“int”(Window.unbounddpreceiding窗口)“而不是1,它抛出了一个错误。你知道吗

我希望daysPassed专栏做的示例:

 Row(userId='59', page='NextSong', datetime='2018-10-01', daysPassed=0),
 Row(userId='59', page='NextSong', datetime='2018-10-03', daysPassed=2),
 Row(userId='59', page='NextSong', datetime='2018-10-04', daysPassed=3)

Tags: 代码用户应用程序dfdatetimepage事件window
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:05

所以,如果我没弄错的话,基本上你需要计算行中的日期与用户的最小日期(开始日期)的差值,而不是lag()。你知道吗

from pyspark.sql import functions as func
window = Window.partitionBy('userId')

df_b = df_a.withColumn("daysPassed", func.datediff(df.dateTime, func.min(df.dateTime).over(window)))

这将计算从用户启动应用程序的第一天起的天数。你知道吗

相关问题 更多 >

    热门问题