gpt4 book ai didi

python - 在 PySpark 中将 Unix 时间戳转换为 ms 时间戳

转载 作者:行者123 更新时间:2023-12-05 05:04:05 29 4
gpt4 key购买 nike

我的 Dataframe timestamp 中有一列,其中包含 UNIX 13 位时间戳,如下所示:

|   timestamp   | | ------------- || 1584528257638 || 1586618807677 || 1585923477767 || 1583314882085 |

With pandas it is fairly easy to convert it like:

ms = pd.to_datetime(df[column], unit='ms')
df[column] = ms

然而,在 pySpark 中,这并不容易,我发现了其他一些,例如 this post试图实现这个目标。最后毫秒的串联对我不起作用,它总是导致第二个时间戳 (HH:mm:ss) 而不是 HH:mm:ss.SSS。

到目前为止我尝试的是:

df = df.withColumn("unix_timestamp", F.unix_timestamp(df.timestamp,'yyyy-MM-dd HH:mm:ss.SSS z') + F.substring(df.timestamp, -3,3).cast('float')/1000)

df = df.withColumn("ms_Timestamp", F.to_timestamp(df["unix_timestamp"]))

不幸的是,这并没有将它转换成毫秒时间戳,我不知道还能做什么。

对于最终获得毫秒时间戳的任何帮助,我将不胜感激。

祝一切顺利,提前致谢。

最佳答案

默认 to_timestamp、from_unixtime、unix_timestamp 函数不会产生毫秒数。

但要获得解决方法,请使用 from_unixtimeconcat 函数来获取毫秒级的时间戳。

#using substring function
df.withColumn("unix_timestamp", concat_ws(".",from_unixtime(substring(col("timestamp"),0,10),"yyyy-MM-dd HH:mm:ss"),substring(col("timestamp"),-3,3))).show(10,False)

#using divide function
df.withColumn("unix_timestamp", concat_ws(".",from_unixtime((col("timestamp")/1000),"yyyy-MM-dd HH:mm:ss"),substring(col("timestamp"),-3,3))).show(10,False)
#+-------------+-----------------------+
#|timestamp |unix_timestamp |
#+-------------+-----------------------+
#|1584528257638|2020-03-18 05:44:17.638|
#|1586618807677|2020-04-11 10:26:47.677|
#|1585923477767|2020-04-03 09:17:57.767|
#|1583314882085|2020-03-04 03:41:22.085|
#+-------------+-----------------------+

关于python - 在 PySpark 中将 Unix 时间戳转换为 ms 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61246054/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com