加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用Scala的API替换DataFrame的值

发布时间:2020-12-20 13:10:11 所属栏目:Python 来源:网络整理
导读:我需要替换DataFrame列中的一些值(模式的空值和零值,我知道这种方法不是很准确,但我只是在练习).我精通Apache Spark的 Python文档,这些例子往往更具说明性.因此,除了Scala文档之外,我决定首先查看一下,我注意到使用DataFrames的 replace方法可以实现我所需要
我需要替换DataFrame列中的一些值(模式的空值和零值,我知道这种方法不是很准确,但我只是在练习).我精通Apache Spark的 Python文档,这些例子往往更具说明性.因此,除了Scala文档之外,我决定首先查看一下,我注意到使用DataFrames的 replace方法可以实现我所需要的功能.

在此示例中,我将列col中的所有2到20替换.

df = df.replace(“2”,“20”,subset =“col”)

在对Python API有了一些信心之后,我决定在Scala上复制它,我注意到Scala文档中有些奇怪的东西.首先,显然DataFrames没有替换方法.其次,经过一些研究,我注意到我必须使用DataFrameNaFunctions的替换功能,但这是罕见的部分,如果你看到该方法的细节,你会注意到他们使用这个功能的方式与python实现中的相同(参见图片如下).

replace documentation

在此之后,我尝试在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来应用替换,但是我不能让它像在python中一样简单,因为我遇到了错误,我不明白为什么.

val dx = df.na.replace(column,Map(0.0 -> doubleValue))

出现错误:

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,T])org.apache.spark.sql.DataFrame <and>
  [T](cols: Array[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))
                                 ^

解决方法

显然问题是我从可变包中导入了一些库,所以我只需要执行方法.toMap将其转换为不可变的.

val dx = df.na.replace(column,Map(0.0 -> doubleValue))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读