如何解决如何将pyspark数据帧中的时间戳列值减少1毫秒
我有pyspark数据帧,其中有timestamp列,我想将timestamp减少1 ms。 spark中是否有一些内置功能可用于处理这种情况?
例如timestamp列的值: 时间戳值:2020-07-13 17:29:36
解决方法
通过使用双重类型,您可以做到这一点。
list_empty
,
您可以使用pyspark.sql.functions.expr
减去INTERVAL 1 milliseconds
from pyspark.sql.functions import expr
df = spark.createDataFrame([('2020-07-13 17:29:36',)],['time'])
df = df.withColumn('time2',expr("time - INTERVAL 1 milliseconds"))
df.show(truncate=False)
#+-------------------+-----------------------+
#|time |time2 |
#+-------------------+-----------------------+
#|2020-07-13 17:29:36|2020-07-13 17:29:35.999|
#+-------------------+-----------------------+
即使time
是这种格式的字符串,Spark也会为您进行隐式转换。
df.printSchema()
#root
# |-- time: string (nullable = true)
# |-- time2: string (nullable = true)
,
您还可以在 expr 中使用 INTERVAL 。
import pyspark.sql.functions as F
df = spark.createDataFrame(
[
(1,'2020-07-13 17:29:36')
],[
'id','time'
]
)
df.withColumn(
'time',F.col('time').cast('timestamp')
).withColumn(
'timediff',(
F.col('time') - F.expr('INTERVAL 1 milliseconds')
).cast('timestamp')
).show(truncate=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。