我正在处理芝加哥数据集,日期列采用字符串格式,由日期组成,但具有两种不同的格式:
Row(Date='01/10/2008 12:00'),
Row(Date='02/25/2008 08:20:53 PM')
Run Code Online (Sandbox Code Playgroud)
我找到下面的代码并尝试了这两种代码(我不确定是否正确),但是由于它包含两种格式,所以下面的代码都会收到错误,表明找不到该格式。
data_clean = data_clean.withColumn("Date_dt", f.from_unixtime(f.unix_timestamp("Date",'MM/dd/yy hh:mm:ss aa'),'MM/dd/yyyy HH:mm:ss'))
data_clean.withColumn("Date_dt", to_timestamp("Date", "MM/dd/yy HH:mm")).show(1, False)
Run Code Online (Sandbox Code Playgroud)
我还找到了以下解决方案,但我需要一个日期时间格式,包括小时和分钟作为输出:
from pyspark.sql.functions import coalesce, to_date
def to_date_(col, formats=("MM/dd/yyyy", "yyyy-MM-dd")):
return coalesce(*[to_date(col, f) for f in formats])
Run Code Online (Sandbox Code Playgroud)
您对检查格式并根据它进行转换有何建议?