python - PySpark:减去两个时间戳列并以分钟为单位返回差异(使用 F.datediff 仅返回一整天)

标签 python date apache-spark pyspark timestamp

我有以下示例数据框。 date_1 和 date_2 列的数据类型为时间戳。

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 考虑时间戳并给我几分钟的时间。

我该怎么做呢?

最佳答案

只需将时间戳转换为 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)

关于python - PySpark:减去两个时间戳列并以分钟为单位返回差异(使用 F.datediff 仅返回一整天),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411446/

相关文章:

Python networkx 节点间距

java - 返回日期或日历字段

python - 如何使用 Python 格式化 pubDate

apache-spark - 是否有任何带有重复顶点合并功能的 Spark GraphX 构造函数

python - 如何获取用户输入来引用 Python 中的变量?

python - numpy.concatenate 多维数组

python - 如何分析 tf.data.Dataset?

c# - C# 中的日期时间分析器错误

scala - 数据框过滤器给出 NullPointerException

python - 无法推断类型 : <type 'str' > 的架构