猿问

pyspark 中的单热编码,连续多个 1

我有一个 Python 数据框final_df,如下所示:

行具有重复ID值。如何使用 pyspark 获得如下的单热编码输出?

http://img1.mukewang.com/610b8ada000163c106960164.jpg

我已将其转换为 spark 数据框:


spark_df = sqlContext.createDataFrame(final_df)

然后在CONCEPTS列中收集唯一值,如下所示:


types = spark_df.select("CONCEPTS").distinct().rdd.flatMap(lambda x: x).collect()

但是当我调用以下内容时:


types_expr = [F.when((F.col("CONCEPTS") == ty), 1).otherwise(0).alias(ty) for ty in types]

df = spark_df.select("ID", *types_expr)

df.show()

我得到以下信息:

http://img2.mukewang.com/610b8ae80001184406980224.jpg

与此类似的其他问题的解决方案不会为一行产生多个 1。


慕姐8265434
浏览 177回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答