Pyspark中的DOB场

Pyspark中的DOB场,pyspark,pyspark-sql,pyspark-dataframes,Pyspark,Pyspark Sql,Pyspark Dataframes,我想从DOB字段计算年龄和性别。但在我的代码中,我是硬编码的。但是需要像今天这样动态地做——DOB。同样,我还想计算从开始日期算起的持续时间。我的数据框看起来像- id dob start_date 77 30/09/1990 2019-04-13 15:27:22 65 15/1

我想从DOB字段计算年龄和性别。但在我的代码中,我是硬编码的。但是需要像今天这样动态地做——DOB。同样,我还想计算从开始日期算起的持续时间。我的数据框看起来像-

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'))))
在上面的两个代码中,我有两个硬代码值。一个是结束日期='2019-09-30',另一个是结束日期='2019-09-30'。但我想根据今天()的日期来做这件事。如何在pyspark中执行此操作?

您可以使用date.today()获取今天的日期,因为您正在使用python和spark。
有关所需日期格式的更多信息,请参见此处

是否需要安装任何软件包?实际出现错误-NameError:未定义名称“date”…尽管安装了两个pck…从pyspark.sql.functions导入datetime导入col,unix_timestamp,以_date@PallaviVerma对您必须添加datetime的导入:
自datetime导入日期
,请参阅提供的文档。已从datetime导入日期添加…但仍出现错误-'ValueError:time数据datetime。日期(2019,10,4)与格式“%d/%m/%Y”(匹配)不匹配。我的完整代码为-df1=df1。带列('dob',to_date(unix_timestamp(F.col('dob'),'dd/MM/yyyyy').cast(“timestamp”))end_date=date.today()end_datetime(end_date,format=“%d/%m/%Y”)df1=df1.with column('end_date'),F.unix__timestamp(F.lit(end_date),'dd/MM/yyyyyyyy').cast(“timestamp”).df1=df1.with column('age'),(F.col('end)end)end))df1)df1,func.round(df1[“age”],0))ValueError:时间数据datetime.date(2019,10,4)与格式“%d/%m/%Y”不匹配错误消息明确说明提供的日期格式不匹配matching@PallaviVerma数据框中的日期格式与python的默认日期格式不匹配。您可以使用
date.today().strftime(“%d/%m/%y”)
用于修改格式。为什么不使用内置函数:
当前日期()