Scala 使用另外两个DF创建一个新DF
我有两个数据帧共享列颜色,我想创建一个新列,代码对应于新DF中的列颜色,如您所见:Scala 使用另外两个DF创建一个新DF,scala,apache-spark,Scala,Apache Spark,我有两个数据帧共享列颜色,我想创建一个新列,代码对应于新DF中的列颜色,如您所见: DF1 +------------+--------------------+ | Code | colour | +------------+--------------------+ | 1001 | brown | | 1201 | black | | 1300 | gree
DF1
+------------+--------------------+
| Code | colour |
+------------+--------------------+
| 1001 | brown |
| 1201 | black |
| 1300 | green |
+------------+--------------------+
DF2
+------------+--------------------+-----------+
| Name | colour | date |
+------------+--------------------+-----------+
| Joee | brown | 20210101 |
| Jess | black | 20210101 |
| James | green | 20210101 |
+------------+--------------------+-----------+
Output:
+------------+--------------------+-----------+----------+
| Name | colour | date | Got |
+------------+--------------------+-----------+----------+
| Joee | black | 20210101 | 1201 |
| Jess | brown | 20210101 | 1001 |
| James | blue | 20210101 | 092 |
+------------+--------------------+-----------+----------+
我该怎么做?使用建议的join?,通过明确指定两个数据帧之间color
列的值相等,一个简单的SQLjoin
就足够了,如下所示(我们删除两个color
列中的一个,因为它们在join后的每一行具有相同的值):
这是我们在显示
对新形成的连接的
数据帧进行加密后得到的结果:
+----+-----+------+--------+
|code| name|colour| date|
+----+-----+------+--------+
|1001| Joe| brown|20210101|
|1201| Jess| black|20210101|
|1300|James| green|20210101|
+----+-----+------+--------+
只需在颜色栏上简单连接即可。你试过什么?df1.join(df2,Seq($“color”),“inner”)这是我正在做的,但我总是得到一个空的DF:|对我不起作用,没有其他方法吗?从控制台给你的输出是什么?您当前使用的Spark版本是什么?也许两个数据帧中的另一个(更准确的)数据样本可以帮助找出错误。列“color”包含一个大字符串,它在两个DF中都存在,但这可能是一个问题吗?由于要加入的列是一个大字符串,请使用两个数据帧的实际内容编辑问题的文本,以便更清楚地了解解决此问题需要做什么。
+----+-----+------+--------+
|code| name|colour| date|
+----+-----+------+--------+
|1001| Joe| brown|20210101|
|1201| Jess| black|20210101|
|1300|James| green|20210101|
+----+-----+------+--------+