[英]PySpark DataFrame groupby into list of values?
簡單地說,假設我有以下 DataFrame:
+-------------+----------+------+
|employee_name|department|salary|
+-------------+----------+------+
| James| Sales| 3000|
| Michael| Sales| 4600|
| Robert| Sales| 4100|
| Maria| Finance| 3000|
| James| Sales| 3000|
| Scott| Finance| 3300|
| Jen| Finance| 3900|
| Jeff| Marketing| 3000|
| Kumar| Marketing| 2000|
| Saif| Sales| 4100|
+-------------+----------+------+
我如何按部門分組並將所有其他值放入列表中,如下所示:
部 | 員工姓名 | 薪水 |
---|---|---|
銷售量 | [詹姆斯、邁克爾、羅伯特、詹姆斯、賽義夫] | [3000, 4600, 4100, 3000, 4100] |
金融 | [瑪麗亞、斯科特、仁] | [3000, 3300, 3900] |
營銷 | [傑夫,庫馬爾] | [3000, 2000] |
將collect_list
與groupBy
子句一起使用
from pyspark.sql.functions import *
df.groupBy(col("department")).agg(collect_list(col("employee_name")).alias("employee_name"),collect_list(col("employee_name")).alias("salary"))
讓我們嘗試最少的輸入;
df.groupby('department').agg(*[collect_list(c).alias(c) for c in df.drop('department').columns]).show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.