pyspark'DataFrame'对象没有属性'pivot'

时间:2016-12-13 04:05:57

标签: pivot pyspark

我正在使用pyspark 2.0 我有这样的df:

    +----------+----------+--------
    |pid       |      date| p_category
    +----------+----------+--------
    |    1ba   |2016-09-30|flat
    |    3ed   |2016-09-30|ultra_thin
    +----------+----------+----------

我做了

    df.groupBy("p_category","date") \                        
    .agg(countDistinct("pid").alias('cnt'))

我得到了这个:

    +----------+----------+------+
    |p_category|      date|   cnt|
    +----------+----------+------+
    |    flat  |2016-09-30|116251|
    |curve     |2016-09-30|113017|
    +----------+----------+------+

但是我希望我像这样使用数据透视表:

    +----------+----------+------+
    |date      |      flat|  ultra-thin
    +----------+----------+------+
   2016-09-30  |    116251|113017
    ------------------------------
   df.groupBy("p_category","date") \                        
    .agg(countDistinct("pid").alias('cnt')).pivot("p_category")

我收到了这个错误:

'DataFrame'对象没有属性'pivot'

在这种情况下我怎么能做一个支点或有其他解决方案? 感谢

1 个答案:

答案 0 :(得分:0)

您应该在gruped data上致电pivot,因此首先需要按date进行分组,然后按p_category进行转移:

>>> df.groupBy('date').pivot('p_category').agg(countDistinct('pid').alias('cnt')).show()
+----------+----+----------+                                                    
|      date|flat|ultra_thin|
+----------+----+----------+
|2016-09-30|   1|         1|
+----------+----+----------+