PySpark:减去两个时间戳列并返回分钟差值(使用 F.datediff 仅返回整天)

PySpark: Subtract Two Timestamp Columns and Give Back Difference in Minutes (Using F.datediff gives back only whole days)

提问人:PineNuts0 提问时间:1/29/2019 最后编辑:paultPineNuts0 更新时间:1/29/2019 访问量:30868

问:

我有以下示例数据帧。date_1 和 date_2 列的数据类型为 timestamp。

ID  date_1                      date_2                      date_diff
A   2019-01-09T01:25:00.000Z    2019-01-10T14:00:00.000Z    -1
B   2019-01-12T02:18:00.000Z    2019-01-12T17:00:00.000Z    0

我想在几分钟内找到date_1和date_2之间的区别

当我使用下面的代码时,它给了我整整数值(天)的date_diff列:

df = df.withColumn("date_diff", F.datediff(F.col('date_1'), F.col('date_2')))  

但我想要的是date_diff考虑时间戳并给我几分钟。

我该怎么做?

Python 日期 apache-spark pyspark 时间戳

答:

37赞 pault 1/29/2019 #1

只需将时间戳转换为 unix 时间戳(自纪元以来的秒数),计算差值,然后除以 60。

例如:

import pyspark.sql.functions as F
df.withColumn(
    "date_diff_min", 
    (F.col("date_1").cast("long") - F.col("date_2").cast("long"))/60.
).show(truncate=False)

评论

0赞 Arun Mohan 7/28/2022
当开始日期和结束日期在同一天的不同时间时,我怎样才能得到小时数的差异?有了上面的答案,如果小时差< 24 小时,我得到 0
0赞 Péter Szilvási 2/4/2023
没有必要铸造和做长。减法后施法一次就足够了:date_1date_2(F.col("date_1") - F.col("date_2")).cast("long")/60.