将密集矢量数据帧转换为新数据帧中的各个列

时间:2017-05-04 17:11:35

标签: apache-spark vector pyspark spark-dataframe data-conversion

我想将带有单个列的基于DenseVector的数据帧转换为新的数据帧,并使用pyspark将向量中的每个项目放在其自己的列中。我不希望输出成为矢量。

df = sqlContext.createDataFrame([
    (1, 'a'), (2, 'a'),
    (3, 'b'), (4, 'b'),
    (5, 'c'), (6, 'c'),
    (7, 'd'), (8, 'd'),
], schema=['value', 'name'])

xf = df.select(df["name"].alias("nam"), df["value"].alias("val"))
pf = df.join(xf, df["name"] == xf["nam"], "inner").where(xf["val"] < df["value"]).select(df["value"], xf["val"], df["name"])

from pyspark.ml.feature import VectorAssembler

assembler = VectorAssembler(inputCols=['value', "val"], outputCol="features")
selected_features = assembler.transform(pf).select('features')
selected_features.collect()
selected_features.show()

0 个答案:

没有答案