Scala:如何使用scala替换Dataframe中的值
发布时间:2020-12-16 09:28:06 所属栏目:安全 来源:网络整理
导读:例如,我想将列中等于0.2的所有数字替换为0.如何在Scala中执行此操作?谢谢 编辑: |year| make|model| comment |blank||2012|Tesla| S | No comment | | |1997| Ford| E350|Go get one now th...| | |2015|Chevy| Volt| null | null| 这是我的Dataframe我试
例如,我想将列中等于0.2的所有数字替换为0.如何在Scala中执行此操作?谢谢
编辑: |year| make|model| comment |blank| |2012|Tesla| S | No comment | | |1997| Ford| E350|Go get one now th...| | |2015|Chevy| Volt| null | null| 这是我的Dataframe我试图将make栏中的特斯拉改为S. 解决方法
注意:
正如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. 然后使用索引(基于零)(我的示例中的Row(row(0),row(2)))构建一个包含行中所有数据的元组 可能有更好的方法.我不熟悉Spark之伞 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |