【发布时间】:2018-01-16 06:39:29
【问题描述】:
我有 30 列,例如 DPF_1、DPF_2、DPF_3......DPF_30,我需要在其上应用数据帧。所有 30 列数据类型均为 String。
我的要求是将这 30 列中存在的所有“Na”值转换为“null”
我试过下面的代码,但它不是动态的。
def udf_A(x:StringType()):
if x == "Na": return "null"
else:return x
udf_B = udf(udf_A, StringType())
df.withColumn("DPF_1" udf_B("DPF_1"))
df.withColumn("DPF_2" udf_B("DPF_2"))
.
.
repeated till DPF_30
现在我希望在 pyspark/scala 中以动态方式进行此过程,因为后面的列可能会随着不同的列名而增加。
【问题讨论】:
-
您总是可以使用
regexp_replace将Na转换为null -
@philantrovert 我还有很多其他要求。这可以通过使用 UDFS 轻松完成
-
所以你正试图将 Na 转换为 Null 并使用单个 UDF 做一堆其他的事情?
-
@philantrovert:是的
标签: scala apache-spark pyspark apache-spark-sql pyspark-sql