2016-12-13 1 views
0

Я использую pyspark 2.0 У меня есть ФР так:pyspark объект 'DataFrame' не имеет атрибут 'стержень'

+----------+----------+-------- 
    |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» не имеет атрибута «стержня»

Как я мог сделать стержень в таком случае или есть другое решение? Благодаря

ответ

0

Вы должны позвонить pivot на gruped data, поэтому сначала нужно сгруппировать по date, а затем поворота на p_category:

>>> df.groupBy('date').pivot('p_category').agg(countDistinct('pid').alias('cnt')).show() 
+----------+----+----------+              
|  date|flat|ultra_thin| 
+----------+----+----------+ 
|2016-09-30| 1|   1| 
+----------+----+----------+ 
Смежные вопросы