使用Pyspark的虚拟编码

时间:2017-10-02 15:00:14

标签: apache-spark encoding pyspark dummy-variable

enter image description here

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

我读了这样的数据

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

在python中,我可以使用下面的代码

编码我的变量
data = pd.get_dummies(data, columns = ['Continent'])

但是我不知道怎么在Pyspark这样做。

非常感谢任何协助。

1 个答案:

答案 0 :(得分:4)

试试这个:

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。