使用Pyspark进行虚拟编码

ALK*_*ALK 5 encoding apache-spark pyspark dummy-variable

在此处输入图片说明

我希望使用Pyspark语法将我的分类变量伪编码为数字变量,如下图所示。

我读了这样的数据

data = sqlContext.read.csv("data.txt", sep = ";", header = "true")
Run Code Online (Sandbox Code Playgroud)

在python中,我可以使用以下代码对变量进行编码

data = pd.get_dummies(data, columns = ['Continent'])
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何在Pyspark中做到这一点。

任何帮助将不胜感激。

may*_*wal 8

尝试这个:

import pyspark.sql.functions as F 
categ = df.select('Continent').distinct().rdd.flatMap(lambda x:x).collect()
exprs = [F.when(F.col('Continent') == cat,1).otherwise(0)\
            .alias(str(cat)) for cat in categ]
df = df.select(exprs+df.columns)
Run Code Online (Sandbox Code Playgroud)

如果您不希望转换后的数据框中的原始列,请排除df.columns。

  • 有更快的解决方案吗? (3认同)