【发布时间】:2018-07-13 12:27:14
【问题描述】:
我有几个数据框,其中包含单列。假设我有 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()
错误地说一列的字段不存在于另一列中。我不确定如何将这 4 个数据帧组合在一起。它们没有任何共同的列。
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()
但是我在旅途中获取列名,因此,我需要在旅途中追加,因此我不知道我将获得多少列。这就是为什么我不能使用上面的命令。
【问题讨论】:
-
在这种情况下,您可以加载所有数据,然后选择所需的列。如果您需要添加列,只需重新选择您想要的列。那么你就不需要使用多个join,也不需要考虑行顺序不固定。
标签: scala apache-spark dataframe