首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在scala中将多个数据帧组合在一起?

如何在scala中将多个数据帧组合在一起?
EN

Stack Overflow用户
提问于 2018-07-13 04:46:53
回答 3查看 344关注 0票数 0

我有几个数据帧,其中包含单列。假设我有4个这样的数据帧,都有一列。如何通过组合所有数据帧来形成单个数据帧?

代码语言:javascript
复制
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"))

为了结合起来,我尝试这样做,但它不起作用:

代码语言:javascript
复制
var newdf = df
newdf = newdf.withColumn("col1",df1.col("UserData.UserValue._title"))
newdf.show()

它会错误地指出一列字段不存在于另一列中。我不确定如何将这4个数据帧组合在一起。它们没有任何公共列。

df2看起来像这样:

代码语言:javascript
复制
+---------------+
|         _title|
+---------------+
|_CONFIG_CONTEXT|
|_CONFIG_CONTEXT|
|_CONFIG_CONTEXT|
+---------------+

df看起来像这样:

代码语言:javascript
复制
+-----------+
|_valuegiven|
+-----------+
|        qwe|
|     dfdfrt|
|       dfdf|
+-----------+

df3和df4的格式也相同。我想像下面这样的数据帧:

代码语言:javascript
复制
+-----------+---------------+
|_valuegiven|         _title|
+-----------+---------------+
|        qwe|_CONFIG_CONTEXT|
|     dfdfrt|_CONFIG_CONTEXT|
|       dfdf|_CONFIG_CONTEXT|
+-----------+---------------+

我使用了这个:

代码语言:javascript
复制
val newdf = xmldf.select(col("UserData.UserValue._valuegiven"),col("UserData.UserValue._title") )
newdf.show()

但是我在旅途中得到了列名,因此,我需要在旅途中添加列名,由于我不知道我将得到多少列。这就是为什么我不能使用上面的命令。

EN

回答 3

Stack Overflow用户

发布于 2018-07-13 05:09:17

你的目标有点模糊。如果请求连接这些数据帧,但您可能只想选择这4列。

代码语言:javascript
复制
val newdf = xmldf.select($"UserData.UserValue._valueRef", $"UserData.UserValue._title", 'author,'price")
newdf.show

如果您真的想连接所有这些数据帧,则需要连接所有这些数据帧并选择适当的字段。

票数 0
EN

Stack Overflow用户

发布于 2018-07-13 05:17:43

如果目标是将xmldf中的4列放到一个新的数据帧中,那么从一开始就不应该将它拆分成4个数据帧。

通过在select函数中提供额外的列名,可以从数据框中选择多个列。

代码语言:javascript
复制
val newdf = xmldf.select(
    col("UserData.UserValue._valueRef"), 
    col("UserData.UserValue._title"),
    col("author"), 
    col("price"))
newdf.show()
票数 0
EN

Stack Overflow用户

发布于 2018-07-13 12:27:14

所以我研究了各种方法,最后Ram Ghadiyaram's answer in Solution 2做了我想做的事情。使用这种方法,您可以在旅途中组合任意数量的列。基本上,您需要创建索引,通过这些索引可以将数据帧连接在一起,并在连接之后完全删除索引列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51314187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档