我有几个数据框,其中包含单个列。假设我有4个这样的数据框,且只有一列。如何将所有元素组合在一起形成一个数据框?
val df = xmldf.select(col("UserData.UserValue._valueRef"))
val df2 = xmldf.select(col("UserData.UserValue._title"))
val df3 = xmldf.select(col("author"))
val df4 = xmldf.select(col("price"))
要结合使用,我正在尝试此操作,但这不起作用:
var newdf = df
newdf = newdf.withColumn("col1",df1.col("UserData.UserValue._title"))
newdf.show()
错误地指出一列的字段不在另一列中。我不确定如何将这四个数据帧组合在一起。他们没有任何共同的专栏。
df2看起来像这样:
+---------------+
| _title|
+---------------+
|_CONFIG_CONTEXT|
|_CONFIG_CONTEXT|
|_CONFIG_CONTEXT|
+---------------+
和df看起来像这样:
+-----------+
|_valuegiven|
+-----------+
| qwe|
| dfdfrt|
| dfdf|
+-----------+
df3和df4的格式也相同。我想要下面的数据框:
+-----------+---------------+
|_valuegiven| _title|
+-----------+---------------+
| qwe|_CONFIG_CONTEXT|
| dfdfrt|_CONFIG_CONTEXT|
| dfdf|_CONFIG_CONTEXT|
+-----------+---------------+
我用了这个:
val newdf = xmldf.select(col("UserData.UserValue._valuegiven"),col("UserData.UserValue._title") )
newdf.show()
但是我正在旅途中获取列名,因此,我需要在旅途中追加,因为我不知道我将获得多少列。这就是为什么我不能使用上面的命令的原因。
答案 0 :(得分:0)
您的目标还不太清楚。如果要求加入这些数据框,但也许您只想选择这4列。
val newdf = xmldf.select($"UserData.UserValue._valueRef", $"UserData.UserValue._title", 'author,'price")
newdf.show
如果您真的想加入所有这些数据框,则需要将它们全部加入并选择适当的字段。
答案 1 :(得分:0)
如果目标是将xmldf中的4列放入一个新的数据帧中,则不应首先将其拆分为4个数据帧。
您可以通过在select函数中提供其他列名称来从数据框中选择多个列。
val newdf = xmldf.select(
col("UserData.UserValue._valueRef"),
col("UserData.UserValue._title"),
col("author"),
col("price"))
newdf.show()
答案 2 :(得分:0)
所以我研究了各种方法,最后Ram Ghadiyaram's answer in Solution 2做了我想做的事情。使用这种方法,您可以在旅途中合并任意数量的列。基本上,您需要创建索引,通过该索引可以将数据框连接在一起,并在连接后完全删除索引列。