【问题标题】:pyspark 'DataFrame' object has no attribute 'pivot'pyspark 'DataFrame' 对象没有属性 'pivot'
【发布时间】:2016-12-13 04:05:56
【问题描述】:

我正在使用 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|
    |ultra_thin   |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'

在这种情况下我该如何做一个支点,或者有其他解决方案吗? 谢谢

【问题讨论】:

    标签: pivot pyspark


    【解决方案1】:

    您应该在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|
    +----------+----+----------+
    

    【讨论】:

    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 2016-11-30
    • 2017-01-15
    • 2023-02-10
    • 1970-01-01
    • 2021-12-17
    • 2021-07-14
    • 2013-10-23
    相关资源
    最近更新 更多