簡體   English   中英

如何將行轉換為 pyspark 上的列?

[英]How to transpose rows into columns on pyspark?

一個問題:如何在 pyspark 上將行轉換為列? 我的原始數據框如下所示:

ID | DATE       |  APP       |  DOWNLOADS  |  ACTIVE_USERS
___________________________________________________________
0  | 2021-01-10 |  FACEBOOK  |  1000       |  5000
1  | 2021-01-10 |  INSTAGRAM |  9000       |  90000
2  | 2021-02-10 |  FACEBOOK  |  9000       |  72000
3  | 2021-02-10 |  INSTAGRAM |  16000      |  500000

但我需要這樣:

ID | DATE       | FACEBOOK - DOWNLOADS | FACEBOOK - ACTIVE_USERS | INSTAGRAM - DOWNLOADS | INSTAGRAM - ACTIVE_USERS
___________________________________________________________________________________________________________________
0  | 2021-01-10 | 1000                 | 5000                    | 9000                  | 90000  
1  | 2021-02-10 | 9000                 | 72000                   | 16000                 | 50000  

我嘗試使用這個問題的答案: Transpose pyspark rows into columns ,但我無法讓它工作。

請問你能幫幫我嗎? 謝謝!

從您的示例中,我假設不需要對“ID”列進行分組,因為它看起來會在您的結果中重置。 這將使查詢類似於以下內容:

import pyspark.sql.functions as F
df.groupBy("DATE").pivot('APP').agg(
    F.first('DOWNLOADS').alias("DOWNLOADS"), 
    F.first("ACTIVE_USERS").alias("ACTIVE_USERS")
)

我們按日期分組並以應用為中心,檢索下載量和活躍用戶的第一個值。

結果:

+----------+------------------+---------------------+-------------------+----------------------+
|      DATE|FACEBOOK_DOWNLOADS|FACEBOOK_ACTIVE_USERS|INSTAGRAM_DOWNLOADS|INSTAGRAM_ACTIVE_USERS|
+----------+------------------+---------------------+-------------------+----------------------+
|2021-02-10|              9000|                72000|              16000|                500000|
|2021-01-10|              1000|                 5000|               9000|                 90000|
+----------+------------------+---------------------+-------------------+----------------------+

暫無
暫無

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

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