【发布时间】:2021-07-06 03:20:18
【问题描述】:
我有一个包含几列的 Pyspark 数据框。为简单起见,我们只考虑两列 id 和 num:
| id | num |
|---|---|
| 1001 | 5 |
| 1002 | 3 |
这里的目标是为id 列创建多行,但减少num 列。以下是预期的输出:
| id | num |
|---|---|
| 1001 | 1 |
| 1001 | 2 |
| 1001 | 3 |
| 1001 | 4 |
| 1001 | 5 |
| 1002 | 1 |
| 1002 | 2 |
| 1002 | 3 |
当前解决方案:
- 创建一个 UDF,为所有缺失值创建一个列表,如下所示:
| id | num |
|---|---|
| 1001 | [1,2,3,4,5] |
| 1002 | [1,2,3] |
- 然后使用explode 创建那些复制的行。
有没有更好的方法来实现这一点?除非绝对必要,否则我不想使用 UDF。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql