Pyspark实现时分字符串转秒数:能否用2-3行代码完成?
PySpark实现时分字符串转总秒数
当然没问题!用Spark的内置字符串和数值函数,2-3行就能搞定这个转换需求:
简洁版(2行)
from pyspark.sql import functions as F df = df.withColumn("total_seconds", F.split(F.col("c1"), ":")[0].cast("int")*3600 + F.split(F.col("c1"), ":")[1].cast("int")*60)
高效版(3行,避免重复拆分)
如果想减少字符串拆分的次数提升效率,可以先把拆分结果存为临时字段,用完再删掉:
from pyspark.sql import functions as F df = df.withColumn("time_parts", F.split(F.col("c1"), ":")) \ .withColumn("total_seconds", F.col("time_parts")[0].cast("int")*3600 + F.col("time_parts")[1].cast("int")*60) \ .drop("time_parts")
原理很简单:split函数把c1里的时分字符串按冒号拆分成数组,分别提取小时和分钟部分转成整数,再各自转换成秒数后相加。测试下来,"23:34"会得到84840,"00:30"得到1800,完全符合你的要求。
内容的提问来源于stack exchange,提问作者BryceSoker
相关产品推荐
相关产品推荐

