scala条件替换_Scala:如何使用scala替换Dataframe中的值

注意:

正如Olivier Girardot所提到的,这个答案没有得到优化,而withColumn解决方案就是使用它(Azeroth2b答案)

由于已被接受,因此无法删除此答案

以下是我对此的看法:

val rdd = sc.parallelize(

List( (2012,"Tesla","S"), (1997,"Ford","E350"), (2015,"Chevy","Volt"))

)

val sqlContext = new SQLContext(sc)

// this is used to implicitly convert an RDD to a DataFrame.

import sqlContext.implicits._

val dataframe = rdd.toDF()

dataframe.foreach(println)

dataframe.map(row => {

val row1 = row.getAs[String](1)

val make = if (row1.toLowerCase == "tesla") "S" else row1

Row(row(0),make,row(2))

}).collect().foreach(println)

//[2012,S,S]

//[1997,Ford,E350]

//[2015,Chevy,Volt]

您实际上可以直接在DataFrame上使用map.

所以你基本上检查了第1列的String tesla.

如果是特斯拉,请使用值S for make else,然后使用第1列的当前值

然后使用索引(基于零)(我的示例中的Row(row(0),make,row(2)))构建一个包含行中所有数据的元组

可能有更好的方法.我不熟悉Spark之伞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值