提问人:PineNuts0 提问时间:1/29/2019 最后编辑:paultPineNuts0 更新时间:1/29/2019 访问量:30868
PySpark:减去两个时间戳列并返回分钟差值(使用 F.datediff 仅返回整天)
PySpark: Subtract Two Timestamp Columns and Give Back Difference in Minutes (Using F.datediff gives back only whole days)
问:
我有以下示例数据帧。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考虑时间戳并给我几分钟。
我该怎么做?
答:
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_1
date_2
(F.col("date_1") - F.col("date_2")).cast("long")/60.
评论