使用 parser.parse 将 none 类型转换为日期时间
Convert none type to datetime using parser.parse
我正在使用以下函数将字符串解析为 PySpark
中的日期
func = udf(lambda x: parser.parse(x), DateType())
我的日期格式是:
"22-Jan-2021 00:00"
尽管此函数不适用于 None
类型,但我有以下 Spark 数据框
date
----
"22-Jan-2021 00:00"
""
"10-Feb-2020 14:00"
当我将 func
应用到 date
列时,我在 DF 的第二行收到一个错误,指出它无法解析 NoneType
。使用 PySpark
和以上 func
解决此问题的任何提示?
一个 MVCE:
date = None
date_parsed = parser.parse(date)
看来你可以使用 to_timestamp
函数。
例如
df.show()
+---+-----------------+
| id| date|
+---+-----------------+
| 1|22-Jan-2021 00:00|
| 2| null|
| 3|10-Feb-2020 14:00|
+---+-----------------+
您可以简单地使用以下代码将date
列中的字符串转换为时间戳类型。
from pyspark.sql import functions
df = df.withColumn("date", functions.to_timestamp("date", "dd-MMM-yyyy HH:mm"))
df.show()
+---+-------------------+
| id| date|
+---+-------------------+
| 1|2021-01-22 00:00:00|
| 2| null|
| 3|2020-02-10 14:00:00|
+---+-------------------+
您还可以使用 df.schema
验证转换是否正确完成
print(df.schema)
StructType(List(StructField(id,StringType,true),StructField(date,TimestampType,true)))
我正在使用以下函数将字符串解析为 PySpark
func = udf(lambda x: parser.parse(x), DateType())
我的日期格式是:
"22-Jan-2021 00:00"
尽管此函数不适用于 None
类型,但我有以下 Spark 数据框
date
----
"22-Jan-2021 00:00"
""
"10-Feb-2020 14:00"
当我将 func
应用到 date
列时,我在 DF 的第二行收到一个错误,指出它无法解析 NoneType
。使用 PySpark
和以上 func
解决此问题的任何提示?
一个 MVCE:
date = None
date_parsed = parser.parse(date)
看来你可以使用 to_timestamp
函数。
例如
df.show()
+---+-----------------+
| id| date|
+---+-----------------+
| 1|22-Jan-2021 00:00|
| 2| null|
| 3|10-Feb-2020 14:00|
+---+-----------------+
您可以简单地使用以下代码将date
列中的字符串转换为时间戳类型。
from pyspark.sql import functions
df = df.withColumn("date", functions.to_timestamp("date", "dd-MMM-yyyy HH:mm"))
df.show()
+---+-------------------+
| id| date|
+---+-------------------+
| 1|2021-01-22 00:00:00|
| 2| null|
| 3|2020-02-10 14:00:00|
+---+-------------------+
您还可以使用 df.schema
print(df.schema)
StructType(List(StructField(id,StringType,true),StructField(date,TimestampType,true)))