`错误:类型不匹配。必需:(sql.DataFrame, String) => sql.DataFrame,找到:(sql.DataFrame, String) => Any
我正在尝试遍历数据框中的所有列。所以我使用了foldLeft。需要根据以下情况替换数据:例如:如果列类型是Integer,则执行一个操作,如果列类型是另一种类型,则需要执行另一个操作..但是获取类型如果我在 foldLeft 中使用条件,则会出现不匹配错误。请有人帮忙。
val actualDF = nonullDF
.columns
.foldLeft(nonullDF) { (memoDF, colName) =>
if (memoDF.schema("colName").dataType == IntegerType) {
memoDF.withColumn(
colName,
when(col("colName") === "?",
(memoDF.select(avg("colName")).head().getInt(0)))
.otherwise(col("colName")))
}
else if (memoDF.schema("colName").dataType == DoubleType) {
memoDF.withColumn(
colName,
when(col("colName") === "?",
(memoDF.select(avg("colName")).head().getDouble(0)))
.otherwise(col("colName")))
}
else if (memoDF.schema("colName").dataType == StringType) {
memoDF.withColumn(
colName,
when(col("colName") === "?", memoDF.groupBy(col("colName")).count().orderBy(desc("count")).first()(0))
.otherwise(col("colName")))
}
}```