我正在使用 pyspark 2.0 我有一个像这样的 df:
+----------+----------+--------
|pid | date| p_category
+----------+----------+--------
| 1ba |2016-09-30|flat
| 3ed |2016-09-30|ultra_thin
+----------+----------+----------
Run Code Online (Sandbox Code Playgroud)
我做了一个
df.groupBy("p_category","date") \
.agg(countDistinct("pid").alias('cnt'))
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
+-------------+----------+------+
|p_category | date| cnt|
+-------------+----------+------+
| flat |2016-09-30|116251|
|ultra_thin |2016-09-30|113017|
+-------------+----------+------+
Run Code Online (Sandbox Code Playgroud)
但我想要这样的数据透视表:
+----------+----------+------+
|date | flat| ultra-thin
+----------+----------+------+
2016-09-30 | 116251|113017
------------------------------
df.groupBy("p_category","date") \
.agg(countDistinct("pid").alias('cnt')).pivot("p_category")
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
“DataFrame”对象没有属性“pivot”
在这种情况下我该如何进行枢轴或者有其他解决方案?谢谢
您应该调用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|
+----------+----+----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12858 次 |
| 最近记录: |