簡體   English   中英

如何使用Scala從CSV文件中刪除列

[英]How do I remove columns from a CSV file using Scala

如果我有如下所示的CSV:

Id,name,number
1,sam,023
2,ron,287

但是我想像這樣,只將列標題作為參數傳遞,在本例中為“ name”:

Id,number
1,023
2,287

我將如何在Scala中做到這一點?

這需要一些爭執,但是下面的應該可以解決。

scala> scala.io.Source.fromFile("data.csv").getLines.map(_.split(",")).map(s => s(0) + " " +  s(2)).mkString("\n")
res4: String =
Id number
1 023
2 287

試試吧。

object ColDrop extends App {

  val Eol = "\n"


  def dropCol(col: String, csv: String, delim: Char = ',') = {

    def drop(line: Array[String], rmIndex: Int) = (line.take(rmIndex) ++ line.drop(rmIndex + 1)).mkString(delim.toString)

    val csvArr = csv.split(Eol)
    val header = csvArr.head.split(delim).map(_.trim)
    val rmIndex = header.indexOf(col)

    drop(header, rmIndex) + Eol + csvArr.tail.map { r =>
      drop(r.split(delim), rmIndex)
    }.mkString(Eol)
  }

  println(dropCol("name",
    """Id,name,number
      |1,sam,023
      |2,ron,287
    """.stripMargin))

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM