我有以下挑戰:我有一個名為 hashtags_users_grouped 的資料框,它具有以下結構:
hashtag_id | user_id | count
123 1 1
245 1 3
123 2 5
在每一行中,我們都會找到一些值,這些值告訴我某個用戶何時提到某個主題標簽以及他這樣做了多少次。在這個例子中,用戶 1 提到了話題標簽 123 1 次,提到了 3 次 245,而用戶 2 只提到了話題標簽 123 5 次。
我想要一個具有以下輸出的資料框:
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'
你知道有什么方法可以做到這一點嗎?
uj5u.com熱心網友回復:
應用后,pivot您需要執行聚合,在這種情況下,聚合是first因為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|
------- --- ----
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369045.html
