python - 名称错误 : global name 'NoneType' is not defined in Spark

标签 python apache-spark pyspark user-defined-functions bigdata

我编写了一个 UDF,将名为“latest_travel_date”的列中的一些特定日期值替换为“NA”。但是,该列还包含许多空值,因此我也在 UDF 中处理了这个问题。 (请参见下文)

Query:
def date_cleaner(date_col):
    if type(date_col) == NoneType:
        pass
    else:
        if year(date_col) in ('1899','1900'):
            date_col= 'NA'
        else:
            pass
    return date_col

date_cleaner_udf = udf(date_cleaner, DateType())

Df3= Df2.withColumn("latest_cleaned", date_cleaner_udf("latest_travel_date"))

但是,我不断收到错误: NameError:未定义全局名称“NoneType”

谁能帮我解决这个问题吗?

最佳答案

这个问题可以通过两种方式解决。

如果您尝试从数据框中查找 Null 值,您应该使用 NullType .

像这样:

if type(date_col) == NullType

或者您可以像这样查找 date_col 是否为 None:

if date_col is None

我希望这会有所帮助。

关于python - 名称错误 : global name 'NoneType' is not defined in Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041316/

相关文章:

python - GTK3+ (3.14) 滚动窗口上的绘图区域

python - 如何解决解析带有西里尔符号的 html 文件的问题?

python - 为什么键入变量(或表达式)会将值打印到标准输出?

python - 使用结构化流(PySpark)运行链式查询

apache-spark - YARN 集群上的 PySpark 分布式处理

apache-spark - 在 spark 本地模式下从 worker 内部写入文件不会写入?

azure - 如何使用pyspark以表格形式打印StringType()的 "dictionary"

python - 如何打印输出到 keras model.fit 的数据,特别是使用 petastorm 数据集时

java - 对 Spark RDD 执行收集操作时出错

csv - 如何在 PySpark 中使用 read.csv 跳过多行