【问题标题】:Dummy Encoding using Pyspark [duplicate]使用 Pyspark 进行虚拟编码 [重复]
【发布时间】:2018-03-13 16:24:24
【问题描述】:

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

我读入这样的数据

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

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: apache-spark encoding pyspark dummy-variable


    【解决方案1】:

    试试这个:

    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。

    【讨论】:

    • 有更快的解决方案吗?
    • 它也使用了大量的内存
    • 这很好用。如果列中有很多唯一值,我想高内存使用是正常的。
    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 2020-11-12
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2011-03-03
    • 2016-07-15
    • 1970-01-01
    相关资源
    最近更新 更多