使用 Pyspark 的虚拟编码

Dummy Encoding using Pyspark

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

我是这样读入数据的

data = sqlContext.read.csv("data.txt", sep = ";", header = "true")

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

data = pd.get_dummies(data, columns = ['Continent'])

但是我不确定如何在 Pyspark 中执行此操作。

如有任何帮助,我们将不胜感激。

试试这个:

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)

如果您不想在转换后的数据框中使用原始列,请排除 df.columns。