我有一个包含n列的数据框,我想用空值替换所有这些列中的空字符串。
我尝试使用
api/messages/{long}
和
val ReadDf = rawDF.na.replace("columnA", Map( "" -> null));
他们两个都没有用。
任何线索都将受到高度赞赏。谢谢。
答案 0 :(得分:3)
由于阻止replace
无法使用空值替换值的错误,您的第一个方法会失败,请参阅here。
你的第二种方法失败了,因为你对驱动程序端的Scala代码混淆了执行程序端的Dataframe指令:你的if-else表达式将在驱动程序上一次进行评估强>(而非每条记录);您希望通过调用when
函数替换它;此外,要比较列的值,您需要使用===
运算符,而不是仅仅比较驱动程序端==
对象的Scala Column
:< / p>
import org.apache.spark.sql.functions._
rawDF.withColumn("columnA", when($"columnA" === "", lit(null)).otherwise($"columnA"))