代码之家  ›  专栏  ›  技术社区  ›  PineNuts0

PySpark:减去两个时间戳列,以分钟为单位返回差值(使用F.datediff只返回整天)

  •  0
  • PineNuts0  · 技术社区  · 7 年前

    我有以下示例数据帧。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
    

    我想在中查找日期1和日期2之间的差异

    当我使用下面的代码时,它会以整整数值(天)为单位给出date_diff列:

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

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

    我该怎么做?

    1 回复  |  直到 7 年前
        1
  •  22
  •   pault Tanjin    7 年前

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