从其他具有时间戳记值的列中在Spark Dataframe中创建一个时间戳记列

时间:2018-07-29 16:24:22

标签: apache-spark pyspark unix-timestamp

我有一个带有时间戳列的spark数据帧。

我想获取列的前一天日期,然后在该日期上添加时间(3,59,59)。

当前列(x1)中的Ex-值:2018-07-11 21:40:00     前一天日期:2018-07-10     在前一天的日期加上时间(3,59,59)之后,它应该像这样:     2018-07-10 03:59:59(x2) 我想在数据框中添加一列,其中“ x2”值对应于所有记录中的“ x1”值。

我想要再加上一列,其值等于(x1-x2).totalDays的精确双精度值

1 个答案:

答案 0 :(得分:1)

减去日期并添加时间并转换为时间戳类型

from pyspark.sql.types import *
from pyspark.sql import *
>>>df.withColumn('x2',concat(date_sub(col("x1"),1),lit(" 03:59:59")).cast("timestamp"))
  

计算时间和日期差异:

日期差异:-

使用datediff函数,我们可以计算日期差

>>>df1.withColumn("x3",datediff(col("x1"),col("x2")))

时差

为此计算时间差,将其转换为 unix时间,然后从x1中减去x2列

>>>df1.withColumn("x3",unix_timestamp(col("x1"))-unix_timestamp(col("x2")))