Pyspark one-hot 编码与分组相同的 id

问题描述 投票:0回答:1

有没有办法在 Spark 中执行 OHE 并“展平”数据集,以便每个 Id 只有一行?

例如,如果输入是这样的:

+---+--------+
| id|category|
+---+--------+
|  0|       a|
|  1|       b|
|  2|       c|
|  1|       a|
|  2|       a|
|  0|       c|
+---+--------+

输出应该是这样的(id0有类别

a
c
,id1有
a
b
等):

+---+----------+----------+----------+
| id|category_a|category_c|category_b|
+---+----------+----------+----------+
|  0|         1|         1|         0|
|  1|         1|         0|         1|
|  2|         1|         1|         0|
+---+----------+----------+----------+

我可以通过 OHE + groupby (aggr - 'max') 在 pandas 中执行此操作,但由于特定的输出格式,无法找到在 pyspark 中执行此操作的方法..

谢谢您,感谢任何帮助。

python pyspark one-hot-encoding
1个回答
0
投票

好吧,看来这可以通过 groupby + 数据透视来完成:

df.groupBy('id').pivot('category').count().show()

小问题如何正确存储这个

encoder
以在推理部分使用..
只是列出列并与推理进行比较,用 0 创建缺失?
还有更好的想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.