У меня есть искровой фрейм данных с 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')
Есть ли лучший способ достичь того же решения?Как я могу сделать то же самое в одной функции?