从spark scala DataFrame中选择名称包含特定字符串的列。

我有一个这样的DataFrame。

Name   City  Name_index   City_index
Ali    lhr     2.0          0.0
abc    swl     0.0          2.0
xyz    khi     1.0          1.0

我想删除不包含 “index “等字符串的列。

预期的输出应该是这样的。

Name_index   City_index
 2.0           0.0
 0.0           2.0
 1.0           1.0

我已经试过了

val cols = newDF.columns
    val regex = """^((?!_indexed).)*$""".r
    val selection = cols.filter(s => regex.findFirstIn(s).isDefined)
    cols.diff(selection)
    val res =newDF.select(selection.head, selection.tail : _*)
    res.show()

但我得到的是这样的结果。

Name   City
Ali    lhr
abc    swl
xyz    khi

解决方案:

在你的regex中有一个错别字,在下面的代码中修正了它。

import org.apache.spark.sql.SparkSession

object FilterColumn {

  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().master("local[*]").getOrCreate()
    import spark.implicits._
    val newDF = List(PersonCity("Ali","lhr",2.0,0.0)).toDF()
    newDF.show()
    val cols = newDF.columns
    val regex = """^((?!_index).)*$""".r
    val selection = cols.filter(s => regex.findFirstIn(s).isDefined)
    val finalCols = cols.diff(selection)
    val res =newDF.select(finalCols.head,finalCols.tail: _*)
    res.show()
  }

}

case class PersonCity(Name : String,   City :String, Name_index : Double,   City_index: Double)

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Angular 2重新加载窗口,然后导航到不同的页面。

2022-5-11 1:00:12

解决方案

网络音频Api:audioContext.createConstantSource()在Safari中没有实现;变通方法?

2022-5-11 1:00:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索