2016-12-28 3 views
2

Прежде всего, я новый парень в мире питона и искры. У меня есть домашняя работа из университета, но я застрял в одном месте. я делаю кластеризацию из моих данных, и теперь у меня есть мои кластеры в PipelinedRDDpyspark piplineRDD подходит для столбца Dataframe

AFTRE это: cluster = featurizedScaledRDD.map(lambda r: kmeansModelMllib.predict(r)) cluster = [2,1,2,0,0,0,1,2]

сейчас сейчас у меня есть cluster и мой dataframe dataDf мне нужно приспосабливать мой cluster как новый столбец dataDf

i Have:    i Need: 
    +---+---+---+  +---+---+---+-------+ 
    | x | y | z |  | x | y | z |cluster| 
    +---+---+---+  +---+---+---+-------+ 
    | 0 | 1 | 1 |  | 0 | 1 | 1 | 2 | 
    | 0 | 0 | 1 |  | 0 | 0 | 1 | 1 | 
    | 0 | 8 | 0 |  | 0 | 8 | 0 | 2 | 
    | 0 | 8 | 0 |  | 0 | 8 | 0 | 0 | 
    | 0 | 1 | 0 |  | 0 | 1 | 0 | 0 | 
    +---+---+---+  +---+---+---+-------+ 

ответ

0

Вы можете добавить индекс, используя zipWithIndex, join и преобразовать его обратно в df.

swp = lambda x: (x[1], x[0]) 

cluster.zipWithIndex().map(swp).join(dataDf.rdd.zipWithIndex().map(swp)) \ 
    .values().toDF(["cluster", "point"]) 

В некоторых случаях это должно быть возможно использовать zip:

cluster.zip(dataDf.rdd).toDF(["cluster", "point"]) 

Вы можете следить с .select("cluster", "point.*") выравниваться выход.

+0

спасибо да, я не использую:/теперь я вижу свою ошибку –

+0

Думаю, я мог бы отредактировать ее после того, как вы ее впервые увидели. – user7337271

Смежные вопросы