【发布时间】:2020-06-16 04:31:06
【问题描述】:
我有一个给定的时间 XXh:YYm(例如 1h:23m),我正在尝试将其转换为秒。棘手的部分是,如果少于一个小时,那么时间将被指定为 YYm(例如 52m)。
我正在使用
%pyspark
newColumn = unix_timestamp(col("time"), "H:mm")
dataF.withColumn('time', regexp_replace('time', 'h|m', '')).withColumn("time", newColumn).show()
这对于删除 h 和 m 字母然后转换为秒非常有效,但如上所述,当时间少于一小时时会抛出 null,因为它实际上不是 H:mm 格式。有什么好的方法呢?我一直在尝试似乎过于复杂的不同方法,但我仍然没有找到解决方案。
我倾向于某种类似的条件
if value contains 'h:' then newColumn = unix_timestamp(col("time"), "H:mm")
else newColumn = unix_timestamp(col("time"), "mm")
但我对 pyspark 还很陌生,不知道如何执行此操作以获得最终输出。我基本上在寻找一种将时间转换为秒并且可以处理“1h:23m”和“53m”格式的方法。
【问题讨论】:
标签: python apache-spark pyspark apache-zeppelin