gpt4 book ai didi

scala - 如何将集合作为新列附加到具有许多列的 DataFrame?

转载 作者:行者123 更新时间:2023-12-01 15:30:43 26 4
gpt4 key购买 nike

我想将新列附加(添加)到具有多列的现有数据框。

val a = Seq(
("10", "MILLER", "1300", "2017-11-03"),
("30", "Martin", "1250", "2017-11-21")).toDF("dept_no","emp_name","sal","date")
scala> a.show
+-------+--------+----+----------+
|dept_no|emp_name| sal| date|
+-------+--------+----+----------+
| 10| MILLER|1300|2017-11-03|
| 30| Martin|1250|2017-11-21|
+-------+--------+----+----------+

对于上面的数据框,我想添加集合的每个元素(无论是常规的 Scala 集合还是另一个单列数据框),例如

val lst = List("10", "Susan")

如何将上面的 lst 的元素添加到 a 数据帧的行中(每行一个元素)?

最佳答案

让我们将 lst 转换为 DataFrame:

val lst = List("10", "Susan").toDF

你可以使用RDDzip方法:

import org.apache.spark.sql.Row
val data = a.rdd.zip(lst.rdd).map { case (l, r) => Row.fromSeq(l.toSeq ++ r.toSeq) }
import org.apache.spark.sql.types.StructType
val schema = StructType(a.schema.fields ++ lst.schema.fields)
val solution = spark.createDataFrame(data, schema)
scala> solution.show
+-------+--------+----+----------+-----+
|dept_no|emp_name| sal| date|value|
+-------+--------+----+----------+-----+
| 10| MILLER|1300|2017-11-03| 10|
| 30| Martin|1250|2017-11-21|Susan|
+-------+--------+----+----------+-----+

关于scala - 如何将集合作为新列附加到具有许多列的 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55447455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com