Spark和Scala,通过映射公用键添加具有来自另一个数据帧的值的新列[重复]
Posted
技术标签:
【中文标题】Spark和Scala,通过映射公用键添加具有来自另一个数据帧的值的新列[重复]【英文标题】:Spark and Scala, add new column with value from another dataframe by mapping common key [duplicate] 【发布时间】:2018-02-21 09:33:50 【问题描述】:我有 2 个数据框。 df1 =
dep-code rank
abc 1
bcd 2
df2 =
some cols... dep-code
abc
bcd
abc
我想将新列添加到 df2 作为 df1.dep-code = df2.dep-code 的排名
结果 -
some cols... dep-code rank
abc 1
bcd 2
abc 1
【问题讨论】:
只要做df2.join(df1, Seq("dep-code"), "left")
就可以了。但是下次在你提问之前,先做一些研究,因为关于如何做到这一点有很多问题和答案
【参考方案1】:
这是一个简单的连接:
df2.join(df1, "dep-code")
具有以下输入:
df1 与连接和所需的列:
+--------+----+
|dep-code|rank|
+--------+----+
| abc| 1|
| bcd| 2|
+--------+----+
带有连接列的df2加上一个额外的(aColumn
):
+----------+--------+
| aColumn|dep-code|
+----------+--------+
| some| abc|
| someother| bcd|
|yetAnother| abc|
+----------+--------+
您将检索以下输出:
+--------+----------+----+
|dep-code| aColumn|rank|
+--------+----------+----+
| abc| some| 1|
| abc|yetAnother| 1|
| bcd| someother| 2|
+--------+----------+----+
【讨论】:
如果 dep-code 不匹配,这将从 df2 中删除行。 对,op 说他想要 df1.dep-code = df2.dep-code 时的结果。所以我假设它想要一个完整的连接,而不是一个左连接。以上是关于Spark和Scala,通过映射公用键添加具有来自另一个数据帧的值的新列[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 spark 和 scala 中,如何将数据框转换或映射到特定列信息?
无法使用 Spark/Scala 从 JSON 嵌套键值对创建列和值
如何使用 Scala Case Class 在 Spark Structured Streaming 中映射 Kafka 源