pandas - 从格式为 dm-yyyy(Pyspark 或 Pandans)的字符串创建 Unix 时间戳
问题描述
我有一些奇怪的(字符串)日期格式,我想在 Pyspark 中将其转换为更合理的时间戳(例如 Unix 为 YYYY-MM-DD)(Pandas 也可以)。
输入(示例):
因此,我希望使用“2021-03-17”格式而不是 17.3.2021(代表 2021 年 3 月 17 日)
“2.3.2021”代表 2021 年 3 月 2 日,应在“2021-03-02”中转换。所以问题是,1 月到 9 月的第 1 天到第 9 天,月数和天数都将显示为一位数。使用 Pyspark 中的“to_date”,它的效果不如我在 Pandas 中尝试的每个转换都会导致无效值或错误。
非常感谢您提前
解决方案
使用from_unixtime,unix_timestamp
函数。
df.show()
#+--------+
#| dt|
#+--------+
#|2.3.2021|
#+--------+
from pyspark.sql.functions import *
#from spark3
spark.sql("set spark.sql.legacy.timeParserPolicy=LEGACY")
df.withColumn("dt",from_unixtime(unix_timestamp(col("dt"),"dd.mm.yyyy"),"yyyy-mm-dd")).\
show()
#+----------+
#| dt|
#+----------+
#|2021-03-02|
#+----------+
#casting as date type
from pyspark.sql.types import *
df.withColumn("dt",from_unixtime(unix_timestamp(col("dt"),"dd.mm.yyyy"),"yyyy-mm-dd").cast("date")).\
show()
#+----------+
#| dt|
#+----------+
#|2021-03-02|
#+----------+
推荐阅读
- python-3.x - 无法在python中创建scrapy项目
- sql - 避免在 Liquibase 中创建 databasechangelog 表
- rtsp - 带有 onvif 元数据流的 Rtsp 流
- android - 如何为某些设备禁用或启用虚拟键盘?
- google-analytics - AMP 可以将 Google 跟踪代码管理器用于视频事件
- r - R:plm面板数据:如何使用管道?
- android - 关上窗户?
- c++ - 在 Visual Studio 代码中调试时如何扩展数组
- javascript - 如果我们得到某个结果,则重试函数 promise
- microsoft-graph-api - EWS 和 Microsoft Graph