scala - 在Scala中将数组转换为具有列和索引的数据框
问题描述
最初我有一个矩阵
0.0 0.4 0.4 0.0
0.1 0.0 0.0 0.7
0.0 0.2 0.0 0.3
0.3 0.0 0.0 0.0
矩阵matrix
被转换normal_array
为
`val normal_array = matrix.toArray`
我有一个字符串数组
inputCols : Array[String] = Array(p1, p2, p3, p4)
我需要将此矩阵转换为以下数据框。(注意:矩阵中的行数和列数将与 的长度相同inputCols
)
index p1 p2 p3 p4
p1 0.0 0.4 0.4 0.0
p2 0.1 0.0 0.0 0.7
p3 0.0 0.2 0.0 0.3
p4 0.3 0.0 0.0 0.0
在python中,这可以通过pandas
库轻松实现。
arrayToDataframe = pandas.DataFrame(normal_array,columns = inputCols, index = inputCols)
但是我该怎么做Scala
呢?
解决方案
这是另一种方式:
val data = Seq((0.0,0.4,0.4,0.0),(0.1,0.0,0.0,0.7),(0.0,0.2,0.0,0.3),(0.3,0.0,0.0,0.0))
val cols = Array("p1", "p2", "p3", "p4","index")
压缩集合并将其转换为 DataFrame。
data.zip(cols).map {
case (col,index) => (col._1,col._2,col._3,col._4,index)
}.toDF(cols: _*)
输出:
+---+---+---+---+-----+
|p1 |p2 |p3 |p4 |index|
+---+---+---+---+-----+
|0.0|0.4|0.4|0.0|p1 |
|0.1|0.0|0.0|0.7|p2 |
|0.0|0.2|0.0|0.3|p3 |
|0.3|0.0|0.0|0.0|p4 |
+---+---+---+---+-----+
推荐阅读
- java - OSGI 中的全局 servlet 异常处理。如何?
- java - 将链表 list_1 的第一个元素添加为链表 list_2 的最后一个元素,并将其从 list_1 中删除
- c - 用C语言向服务器发送HTTP请求后什么也没有收到
- ida - 为什么 RH850G3K 不在我的 IDA 的处理器类型列表中?
- python - 在 pytorch 中使用 optimizer.step 或 model.step 有区别吗?
- java - 为什么我得到表达式预期 fab.setOnClickListener(View?
- java - “无法解析片段中的 findviewbyid”错误
- html - HTML 'tbody' 不滚动(忽略高度和溢出)
- python - 无法解析 h4 标签内的数据:Python3
- apache - 为 Wamp 和 Windows 上的所有虚拟主机创建 Robots.txt