Поле DOB в Писпарке - PullRequest
       9

Поле DOB в Писпарке

0 голосов
/ 04 октября 2019

Я хочу рассчитать возраст и из поля DOB. Но в моем коде я тяжело его кодирую. Но нужно делать динамически, как сегодня - ДОБ. Точно так же я также хочу рассчитать продолжительность из start_date. Мой фрейм данных выглядит так -

id                        dob                           start_date
77                     30/09/1990                     2019-04-13 15:27:22
65                     15/12/1988                     2018-12-26 23:28:12
3                      08/12/2000                     2018-12-26 23:28:17

У меня пока есть - Для расчета возраста

df= df.withColumn('dob',to_date(unix_timestamp(F.col('dob'),'dd/MM/yyyy').cast("timestamp")))
end_date = '3/09/2019'
end_date = pd.to_datetime(end_date, format="%d/%m/%Y")
df= df.withColumn('end_date',F.unix_timestamp(F.lit(end_date),'dd/mm/yyyy').cast("timestamp"))
df = df.withColumn('age', (F.datediff(F.col('end_date'), F.col('dob')))/365)
df= df.withColumn("age", func.round(df["age"], 0))

For duration calculation - 

end_date_1 = '2019-09-30'
end_date_1 = pd.to_datetime(end_date_1, format="%Y-%m-%d")
df= df.withColumn('end_date_1',F.unix_timestamp(F.lit(end_date_1),'yyyy-MM-dd HH:mm:ss').cast("timestamp"))
df= df.withColumn('duration', (F.datediff(F.col('end_date_1'), F.col('created_at'))))

В приведенных выше двух кодах у меня есть жесткий код двух значений. Одним из них является end_date = '2019-09-30', а другим - end_date_1 = '2019-09-30'. Но хочу сделать это на основе текущей даты (). Как это сделать в pyspark?

1 Ответ

0 голосов
/ 04 октября 2019

Вы можете использовать date.today (), чтобы получить сегодняшнюю дату, так как вы используете python с искрой. Более подробную информацию о желаемом формате даты можно найти здесь Официальная документация Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...