在 PySpark 中,如何将时间戳值四舍五入到最接近的分钟?

Posted

技术标签:

【中文标题】在 PySpark 中,如何将时间戳值四舍五入到最接近的分钟?【英文标题】:In PySpark how to round a timestamp value to the nearest minute? 【发布时间】:2021-11-16 06:08:54 【问题描述】:

我正在尝试对 PySpark 中的时间戳列进行四舍五入,我无法使用 date_trunc 函数,因为它只会向下舍入值..

例如:

Real Value              Expected Round Up/Down
2020-11-03 18:25:04 ->  2020-11-03 18:25:00
2020-11-03 18:21:44 ->  2020-11-03 18:22:00

我不想使用 pandas 来解决问题。

【问题讨论】:

【参考方案1】:

您可以将 30 秒添加到时间戳,然后截断到分钟。这假设您的列名为“时间”

import pyspark.sql.functions as f

df = df.withColumn('time_minute', f.date_trunc('minute', f.col('time') + f.expr('INTERVAL 30 SECONDS')))

+-------------------+-------------------+                                       
|               time|        time_minute|
+-------------------+-------------------+
|2020-11-03 18:25:04|2020-11-03 18:25:00|
|2020-11-03 18:21:44|2020-11-03 18:22:00|
+-------------------+-------------------+

【讨论】:

完美!谢谢@ScootCork

以上是关于在 PySpark 中,如何将时间戳值四舍五入到最接近的分钟?的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:to_timestamp返回不正确的时间戳值[重复]

pyspark如何在窗口内聚合

如何四舍五入到最接近的十分位?

如何将双精度格式设置为四舍五入到最接近的美元的货币?

将分钟向下舍入到最接近的一刻钟

Pandas - 将时间戳四舍五入到最接近的秒数