我需要替换DataFrame
的Column
中的一些值(对于模式,我知道这种方法不是很准确,但我只是在练习)。我精通apachespark的Python
文档,并且示例往往更具解释性。因此,除了Scala文档之外,我决定先看看那里,我注意到使用DataFrames
中的replace方法可以实现我需要的功能。在
在本例中,我将列col
中的所有2
替换为20
。在
df = df.replace("2", "20", subset="col")
在对Python
API有了一些信心之后,我决定在Scala
上复制这个,我注意到Scala
文档中有一些奇怪的东西。首先,显然DataFrames
没有{replace
功能,但这是很少见的部分,如果您看到该方法的细节,您会注意到他们使用此功能的方式与python
实现相同(见下图)。在
在这之后,我试图在Scala中运行它,并进行了分解,显示了下一个错误:
Name: Compile Error
Message: <console>:108: error: value replace is not a member of org.apache.spark.sql.DataFrame
val dx = df.replace(column, Map(0.0 -> doubleValue))
^
StackTrace:
然后我试图使用DataFrameNaFunctions
来应用replace
,但我不能使它像python
中那样简单,因为我遇到了一个错误,我不明白为什么。在
错误来了:
Name: Compile Error
Message: <console>:108: error: overloaded method value replace with alternatives:
[T](cols: Seq[String], replacement: scala.collection.immutable.Map[T,T])org.apache.spark.sql.DataFrame <and>
[T](col: String, replacement: scala.collection.immutable.Map[T,T])org.apache.spark.sql.DataFrame <and>
[T](cols: Array[String], replacement: java.util.Map[T,T])org.apache.spark.sql.DataFrame <and>
[T](col: String, replacement: java.util.Map[T,T])org.apache.spark.sql.DataFrame
cannot be applied to (String, scala.collection.mutable.Map[Double,Double])
val dx = df.na.replace(column, Map(0.0 -> doubleValue))
^
显然问题是我从
mutable
包中导入了一些库,所以我只需要执行方法.toMap
将其转换为immutable
。在相关问题 更多 >
编程相关推荐