pyspark - Pyspark 中的 DOB 字段
问题描述
我想计算年龄和出生日期字段。但是在我的代码中,我很难对其进行编码。但是需要像今天这样动态地做 - 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'。但想根据 todays() 日期执行此操作。如何在pyspark中做到这一点?
解决方案
您可以使用 date.today() 来获取今天的日期,就像您使用 python 和 spark 一样。有关所需日期格式的更多信息,请参见官方 python 文档
推荐阅读
- spring-boot - 如何在 Spring Boot JPA 中通过 ID 保存 ManyToOne 属性
- javascript - 预加载器不会消失
- rust - Snappy 不与生锈联系起来
- magento - Composer 2,您的某些插件似乎与它不兼容
- java - 在 Java 的 Linkedlist 实现中,head 如何使用新节点进行更新
- python - Pandas 通过迭代除索引之外的所有列来规范化数据帧
- qualcomm - HVX 相机流 (Hexagon SDK) 在 Intrinsyc Qualcomm Snapdtragon 845 uSOM Dev 中不起作用。成套工具
- bash - 仅循环通过子目录
- iis - IIS - 多个站点与一个具有多个子应用程序的站点
- android - 如何重命名片段中的按钮/文本视图文本?