У меня есть заданное время 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 и последующего преобразования в секунды, но выдает ноль, когда время меньше часа, как описано выше. так как это на самом деле не в формате H: мм. Какой хороший подход к этому? Я продолжаю пробовать разные вещи, которые, кажется, слишком усложняют, и я до сих пор не нашел решения.
Я склоняюсь к условному виду, подобному
if value contains 'h:' then newColumn = unix_timestamp(col("time"), "H:mm")
else newColumn = unix_timestamp(col("time"), "mm")
, но я довольно новичок в pyspark и не уверен, как это сделать, чтобы получить окончательный результат. Я в основном ищу подход, который преобразует время в секунды и может обрабатывать форматы «1h: 23m», а также «53m».