我正在使用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'
在这种情况下我怎么能做一个支点或有其他解决方案? 感谢
答案 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|
+----------+----+----------+