在PySpark中将字符串转换为日期时处理空值

rjee0c15  于 2022-12-17  发布在  Spark
关注(0)|答案(2)|浏览(201)

我正在AWS Glue中构建一个作业,我的表中有一个名为booking且数据类型为字符串的列。它包含一些空值沿着日期信息。使用pySpark数据框将字符串转换为日期时,这些空值会导致问题。
| 预订|姓名|
| - ------|- ------|
| 二○二二年一月十一日|约翰|
| 零|最大值|
我尝试了多种方法。
1.使用**fillna()& fill()**将空值替换为虚拟日期01.01.1900。不幸的是,粘附作业引发错误,指出 ImportError:无法从“pyspark.sql. functions”导入名称“fill” 我的想法是用虚拟日期替换空值,然后使用to_date函数转换它。
1.写入条件:
df_spark = df_spark.withColumn(“预订”,当(df_spark.预订.为空(),“01.01.1900”)时。否则(df_spark.预订))
df_spark = df_spark. with列(“预算数据”,截止日期(df_spark[“预算数据”],“年月日”))
这也抛出超级奇怪的错误信息(随附截图)

1.下面的语句也不起作用。
df_spark = df_spark.withColumn(“预订”,截止日期(df_spark[“预订”],无))
你能告诉我正确的方法吗?
先谢谢你了。

jk9hmnmh

jk9hmnmh1#

在“WithColumn”中使用合并函数。这会将null替换为您提供的值。

j8ag8udp

j8ag8udp2#

不幸的是,粘附作业抛出错误,指出ImportError:无法从“pyspark.sql.functions”导入名称“fill”
fill是一个方法,你可以在一个特定的DataFrame上调用它,所以你不需要导入它。它是PySpark原生的一部分,所以如果其余的PySpark代码运行良好,那么它应该没有问题。你可以在这里参考如何使用它的文档-https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameNaFunctions.fill.html#pyspark-sql-dataframenafunctions-fill

相关问题