2017-08-08 67 views
0

我的客戶名單誰買的項目:PySpark數據框中:Longformat以寬幅

rdd = sc.parallelize([('A','Item1'), ('A','Item3'), ('B','Item1'), ('B','Item2')]) 
df=rdd.toDF(['Person','Item']) 
df.show() 
+------+-----+ 
|Person| Item| 
+------+-----+ 
|  A|Item1| 
|  A|Item3| 
|  B|Item1| 
|  B|Item2| 
+------+-----+ 

現在我想用pyspark把這裏改爲寬幅。結果應該是這樣的:

+------+-----+-----+-----+ 
|Person|Item1|Item2|Item3| 
+------+-----+-----+-----+ 
|  A| 1 | 0 | 0 | 
|  A| 0 | 0 | 1 | 
|  B| 1 | 0 | 0 | 
|  B| 0 | 1 | 0 | 
+------+-----+-----+-----+ 

任何想法如何做到這一點?

最好的問候, 菲利克斯

回答

0

我居然找到了解決辦法:

>>> df.crosstab('Person', 'Item').show() 
+-----------+-----+-----+-----+ 
|Person_Item|Item1|Item2|Item3| 
+-----------+-----+-----+-----+ 
|   A| 1| 0| 1| 
|   B| 1| 1| 0| 
+-----------+-----+-----+-----+