【发布时间】:2020-07-02 11:11:12
【问题描述】:
我一直在为 pyspark 中的一个问题而摸不着头脑。
我想根据列是否为 NULL 有条件地应用 UDF。一个限制是我无法访问我正在编写代码的位置的 DataFrame,我只能访问一个列对象。
因此,我不能简单地这样做:
df.where(my_col.isNull()).select(my_udf(my_col)).toPandas()
因此,我只能访问 Column 对象,我正在编写以下内容:
my_res_col = F.when(my_col.isNull(), F.lit(0.0) \
.otherwise(my_udf(my_col))
然后再做:
df.select(my_res_col).toPandas()
不幸的是,由于某种我不知道的原因,我仍然在我的 UDF 中收到 NULL,迫使我直接在我的 UDF 中检查 NULL 值。
我不明白为什么 isNull() 没有阻止具有 NULL 值的行调用 UDF。
非常感谢您对此事的任何见解。
提前感谢您的帮助。
安东尼
【问题讨论】:
-
您有没有尝试过解决方案?