簡體   English   中英

如何 pivot 和 Pyspark Dataframe

[英]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 案例:

Python Pandas:將行轉換為列標題

用戶 ID 作為國家標簽 ID 作為獎牌計數應該相同。

有關更多詳細信息和說明: 我如何 pivot 和 dataframe?

應用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()

Output

+-------+---+----+
|user_id|123| 245|
+-------+---+----+
|      1|  1|   3|
|      2|  5|null|
+-------+---+----+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM