在pyspark中将列表列编码为整数



我有一个像这样的pyspark数据框架:

--------------------
| id | configuration |
|----|---------------|
| 1  | [c1, c2, a1]  |
| 2  | [c1, c2, a1]  |
| 3  | [z1, x6, a8]  |
--------------------

我想将配置列编码为整数列,以下是所需的数据帧:

-----------------------------
| id | configuration | labels |
|----|---------------|--------|
| 1  | [c1, c2, a1]  |    1   |
| 2  | [c1, c2, a1]  |    1   |
| 3  | [z1, x6, a8]  |    2   |
-----------------------------

如何执行此操作?

窗口函数,dense_rank()

df.withColumn('labels', dense_rank().over(Window.partitionBy().orderBy('configuration'))).show()
+---+-------------+------+
| id|configuration|labels|
+---+-------------+------+
|  1| [c1, c2, a1]|     1|
|  2| [c1, c2, a1]|     1|
|  3| [z1, x6, a8]|     2|
+---+-------------+------+

最新更新