gpt4 book ai didi

pyspark - 查找两个日期之间的相对周数

转载 作者:行者123 更新时间:2023-12-03 09:00:58 27 4
gpt4 key购买 nike

我有一个 Spark 数据框,其中有 2 列代表日期(date1 和 date2)。我想找到两个日期之间的相对周数(+ 1 周)。为了做到这一点,我找到每个日期的星期并将两者相减。 date2 始终是较早的日期。日期之间的最大差异最多为 1 年,因此如果 date2 来自前一年,我需要在解决方案中添加 52。

我想出了如何做到这一点,但我的解决方案似乎很麻烦。这是我的解决方案:

from pyspark.sql.functions import date_format, udf
from pyspark.sql.types import IntegerType

def fixWeeks(w):
if w < 0:
w = w + 52
return w

week_filter = udf(fixWeeks,IntegerType())
df_week = df.withColumn("TmpWeek", date_format("date1",'w').cast('int')-date_format("date2",'w').cast('int')+1)
df_week = df_week.withColumn('week',week_filter(df_week.TmpWeek)).drop('TmpWeek')

是否有更好的方法来实现相同的解决方案?我怎样才能在一个函数中做同样的事情?

最佳答案

一种简单的方法是使用 pyspark.sql.functions.datediff() 计算日期之间的差异(以天为单位) ,除以 7,然后取上限。

例如:

from pyspark.sql.functions import ceil, datediff
df_week = df.withColumn('week', ceil(datediff('date1','date2')/7))

关于pyspark - 查找两个日期之间的相对周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com