首页 > 解决方案 > 如何在 Scala 中将 CSV 列读入向量

问题描述

我有一个 CSV 文件: 我的 CSV 文件

我想这样创建一个地图:

((A -> Vector(10.75,10.75,10.47,...,..), B-> Vector(164.56,164.99,160.98,...), C -> Vector(7.1,7.4,9.4,...,), D - > Vector(14.2,14.8,18.8,...,..))

这是我到目前为止所拥有的(不多):

val source=Source.fromFile("train3.csv")
var firstLine = source.getLines.find(_ => true).get
println(firstLine)
source.getLines().foreach(line=>{
  val lines = line.split(",").map(_.trim).toVector
  println(cols)
})
source.close()

此代码打印: 我的代码打印的内容

我的向量包含行,我需要我的向量包含列而不是 CSV 中的行。

标签: scala

解决方案


一旦你阅读了这些行,并有类似的东西 val lines: Seq[Seq[String]] = ???,就做

   val columns = "ABC..."
   lines
     .iterator
     .map { row => columns.zip(row) }
     .groupBy { _._1 }
     .mapValues { _._2 }
     .toMap

Vectors如果您出于某种奇怪的原因而特别希望它,那么只需在.to[Vector]之后添加_._2


推荐阅读