scala - 将列元素添加到 Dataframe Scala Spark
问题描述
我有两个数据框,我想将一个添加到另一个的所有行中。我的数据框是这样的:
id | name | rate
1 | a | 3
1 | b | 4
1 | c | 1
2 | a | 2
2 | d | 4
name
a
b
c
d
e
我想要这样的结果:
id | name | rate
1 | a | 3
1 | b | 4
1 | c | 1
1 | d | null
1 | e | null
2 | a | 2
2 | b | null
2 | c | null
2 | d | 4
2 | e | null
我怎样才能做到这一点?
解决方案
它似乎不仅仅是一个简单的连接。
val df = df1.select("id").distinct().crossJoin(df2).join(
df1,
Seq("name", "id"),
"left"
).orderBy("id", "name")
df.show
+----+---+----+
|name| id|rate|
+----+---+----+
| a| 1| 3|
| b| 1| 4|
| c| 1| 1|
| d| 1|null|
| e| 1|null|
| a| 2| 2|
| b| 2|null|
| c| 2|null|
| d| 2| 4|
| e| 2|null|
+----+---+----+
推荐阅读
- sql - 如何在 SQL 中按某些列而不是其他列进行聚合
- python - 并行使用 Python 的 dask 将多个 CSV 分别读取到无法正常工作的数据帧列表中
- azure - 如何将结构添加到 Azure IoT Central 自定义应用程序
- mysql - 通过合并的 LEFT JOIN 过滤
- c++ - libSDL2-mixer:如何更改 wav 文件 MixChunk 中的样本?
- node.js - 猫鼬 .exec() 不起作用,但承诺可以
- performance - 多处理器缓存一致性
- scripting - 无法弄清楚如何从 Az Devops CLI 创建一个空的构建管道
- google-app-engine - 外部 MySQL 数据库的 GAE 缓慢
- pandas - 使用 nx.from_pandas_edgelist 创建图