[英]How to pivot a Pyspark Dataframe
我有以下挑戰:我有一個名為 hashtags_users_grouped 的 dataframe,它具有以下結構:
hashtag_id | user_id | count
123 1 1
245 1 3
123 2 5
在每一行中,我們找到的值告訴我某個用戶何時提到某個主題標簽以及他提到了多少次。 在這個例子中,用戶 1 提到了標簽 123 1 次和 245 3 次,而用戶 2 只提到了標簽 123 5 次。
我想要一個 dataframe 和以下 output:
user | 123 | 245
1 1 3
2 5 0
換句話說,與第一個表相同的信息,但每個主題標簽有一列,以了解用戶提到每個主題標簽的次數。 我閱讀了文檔並嘗試運行以下命令,但沒有成功:
a = hashtags_users_joined_grouped_df.groupBy("user_id").pivot("hashtag_id")
a.show(5)
我收到以下錯誤消息:
AttributeError: 'GroupedData' object has no attribute 'show'
你知道有什么辦法嗎?
應用pivot
在這種情況下,您需要對metric
執行聚合count
。
from pyspark.sql import functions as F
df = spark.createDataFrame([(123, 1, 1, ),
(245, 1, 3),
(123, 2, 5),],
("hashtag_id", "user_id", "count", ))
df.groupBy("user_id")\
.pivot("hashtag_id")\
.agg(F.first("count"))\
.show()
+-------+---+----+
|user_id|123| 245|
+-------+---+----+
| 1| 1| 3|
| 2| 5|null|
+-------+---+----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.