是否有可能以及将列添加到数据框的最有效的方法是什么?
更具体地,列可以用作现有数据帧的行ID.
在简化的情况下,从文件读取而不是标记它,我可以想到如下(在Scala中),但它完成了错误(在第3行),并且无论如何看起来不是最好的路线:
var dataDF = sc.textFile("path/file").toDF()
val rowDF = sc.parallelize(1 to DataDF.count().toInt).toDF("ID")
dataDF = dataDF.withColumn("ID", rowDF("ID"))
Run Code Online (Sandbox Code Playgroud) 我df在Spark中有一个数据框,看起来像这样:
scala> df.show()
+--------+--------+
|columna1|columna2|
+--------+--------+
| 0.1| 0.4|
| 0.2| 0.5|
| 0.1| 0.3|
| 0.3| 0.6|
| 0.2| 0.7|
| 0.2| 0.8|
| 0.1| 0.7|
| 0.5| 0.5|
| 0.6| 0.98|
| 1.2| 1.1|
| 1.2| 1.2|
| 0.4| 0.7|
+--------+--------+
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码包含id列
val df_id = df.withColumn("id",monotonicallyIncreasingId)
Run Code Online (Sandbox Code Playgroud)
但id列不是我所期望的:
scala> df_id.show()
+--------+--------+----------+
|columna1|columna2| id|
+--------+--------+----------+
| 0.1| 0.4| 0|
| 0.2| 0.5| 1|
| 0.1| 0.3| 2|
| 0.3| 0.6| 3|
| 0.2| 0.7| 4|
| 0.2| 0.8| …Run Code Online (Sandbox Code Playgroud) 我正在使用Apache Spark 2.0 Dataframe/Dataset API我想从值列表中向我的数据框添加一个新列.我的列表具有与给定数据帧相同数量的值.
val list = List(4,5,10,7,2)
val df = List("a","b","c","d","e").toDF("row1")
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
val appendedDF = df.withColumn("row2",somefunc(list))
df.show()
// +----+------+
// |row1 |row2 |
// +----+------+
// |a |4 |
// |b |5 |
// |c |10 |
// |d |7 |
// |e |2 |
// +----+------+
Run Code Online (Sandbox Code Playgroud)
对于任何想法我会很高兴,我的数据帧实际上包含更多列.