scala - Scala 有按列拆分 CSV 的好方法吗?

标签 scala csv

我有一个带有列标题的 csv。一列标题是“日期”。如果我想在 DATE 之前和之后/包括 DATE 生成两个 CSV,有没有办法在没有程序循环的情况下做到这一点?我注意到大多数列表函数都适合按行过滤。

最佳答案

我假设您已经将数据解析为如下所示:

val myDoc = List(
  List("ID", "NAME", "DATE", "DESC"),
  List("1", "a", "1990", "x"), 
  List("2", "b", "1991", "y")
)

现在我们可以使用 splitAtunzip将列表拉开。请注意,我对数据做了很多假设——在实际代码中,我们想要检查列表是否为空,并且标题实际上包含 "DATE"柱子。
def split(doc: Seq[Seq[String]]) = {
  val i = doc.head.indexOf("DATE")
  doc.map(_.splitAt(i)).unzip
}

我们可以将其应用于我们的测试数据:
scala> val (b, a) = split(myDoc)
b: List[Seq[String]] = List(List(ID, NAME), List(1, a), List(2, b))
a: List[Seq[String]] = List(List(DATE, DESC), List(1990, x), List(1991, y))

这对我来说看起来很合理。

关于scala - Scala 有按列拆分 CSV 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883067/

相关文章:

java - 运行 jacocoReport

scala - Akka HTTP 根据 Future 的结果设置响应头

scala - AKKA:通过消息队列进行通信

windows - Scala & Spark : Dataframe. write._ 在 Windows 上

java - 无需第三方库读取CSV文件

python - 将 csv 转换为 json

scala - 如何使用 Scala 在 Spark 中进行滑动窗口排序?

scala - 如何从 scala Map 转换为 scala.collection.immutable.HashMap?

sql-server - 在 ssis 中导出到 csv 时包括前导零

java - CSVJDBC - 解释聚合函数中的字符串而不是整数