2017-08-08 47 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| 
+-----------+-----+-----+-----+