【发布时间】:2023-03-13 04:25:01
【问题描述】:
我的 Spark DataDrame 中有一个包含多种字符串格式的日期列。我想将这些转换为 DateTime。
我的专栏中的两种格式是:
-
mm/dd/yyyy;和 yyyy-mm-dd
到目前为止,我的解决方案是使用 UDF 更改第一个日期格式以匹配第二个日期格式,如下所示:
import re
def parseDate(dateString):
if re.match('\d{1,2}\/\d{1,2}\/\d{4}', dateString) is not None:
return datetime.strptime(dateString, '%M/%d/%Y').strftime('%Y-%M-%d')
else:
return dateString
# Create Spark UDF based on above function
dateUdf = udf(parseDate)
df = (df.select(to_date(dateUdf(raw_transactions_df['trans_dt']))))
这可行,但并不是那么容错。我特别担心:
- 我还没有遇到过日期格式。
- 区分
mm/dd/yyyy和dd/mm/yyyy(我使用的正则表达式目前显然不这样做)。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql