PySpark SQL 函數的 collect_list(~)
方法返回列中的值列表。與 collect_set(~)
不同,返回的列表可以包含重複值。空值將被忽略。
參數
1.col
| string
或 Column
對象
列標簽或 Column
對象。
返回值
PySpark SQL Column
對象 ( pyspark.sql.column.Column
)。
警告
假設返回列表的順序可能是隨機的,因為順序受洗牌操作影響。
例子
考慮以下PySpark DataFrame:
data = [("Alex", "A"), ("Alex", "B"), ("Bob", "A"), ("Cathy", "C"), ("Dave", None)]
df = spark.createDataFrame(data, ["name", "group"])
df.show()
+-----+-----+
| name|group|
+-----+-----+
| Alex| A|
| Alex| B|
| Bob| A|
|Cathy| C|
| Dave| null|
+-----+-----+
獲取 PySpark 中的列值列表
要獲取 group
列中的值列表:
import pyspark.sql.functions as F
df.select(F.collect_list("group")).show()
+-------------------+
|collect_list(group)|
+-------------------+
| [A, B, A, C]|
+-------------------+
請注意以下事項:
-
我們有重複的值(
A
)。 -
空值將被忽略。
同樣,您也可以將 Column
對象傳遞給 collect_list(~)
:
import pyspark.sql.functions as F
df.select(F.collect_list(df.group)).show()
+-------------------+
|collect_list(group)|
+-------------------+
| [A, B, A, C]|
+-------------------+
獲取標準清單
要獲取標準列表:
list_rows = df.select(F.collect_list(df.group)).collect()
list_rows[0][0]
['A', 'B', 'A', 'C']
此處, collect()
方法將 select(~)
返回的 PySpark DataFrame 的內容作為 Row
對象的列表返回。該列表的長度保證為 1,因為 collect_list(~)
將值收集到單個列表中。最後,我們使用 [0]
訪問 Row
對象的內容。
獲取 PySpark 中每個組的列值列表
方法 collect_list(~)
通常在聚合上下文中使用。考慮與上麵相同的 PySpark DataFrame:
df.show()
+-----+-----+
| name|group|
+-----+-----+
| Alex| A|
| Alex| B|
| Bob| A|
|Cathy| C|
| Dave| null|
+-----+-----+
要將 group
列展平為每個 name
的單個列表:
import pyspark.sql.functions as F
df.groupby("name").agg(F.collect_list("group")).show()
+-----+-------------------+
| name|collect_list(group)|
+-----+-------------------+
| Alex| [A, B]|
| Bob| [A]|
|Cathy| [C]|
| Dave| []|
+-----+-------------------+
相關用法
- Python PySpark SQL Functions collect_set方法用法及代碼示例
- Python PySpark SQL Functions col方法用法及代碼示例
- Python PySpark SQL Functions concat方法用法及代碼示例
- Python PySpark SQL Functions count_distinct方法用法及代碼示例
- Python PySpark SQL Functions concat_ws方法用法及代碼示例
- Python PySpark SQL Functions countDistinct方法用法及代碼示例
- Python PySpark SQL Functions count方法用法及代碼示例
- Python PySpark SQL Functions split方法用法及代碼示例
- Python PySpark SQL Functions repeat方法用法及代碼示例
- Python PySpark SQL Functions explode方法用法及代碼示例
- Python PySpark SQL Functions instr方法用法及代碼示例
- Python PySpark SQL Functions dayofmonth方法用法及代碼示例
- Python PySpark SQL Functions date_add方法用法及代碼示例
- Python PySpark SQL Functions array方法用法及代碼示例
- Python PySpark SQL Functions translate方法用法及代碼示例
- Python PySpark SQL Functions dayofweek方法用法及代碼示例
- Python PySpark SQL Functions expr方法用法及代碼示例
- Python PySpark SQL Functions regexp_extract方法用法及代碼示例
- Python PySpark SQL Functions regexp_replace方法用法及代碼示例
- Python PySpark SQL Functions round方法用法及代碼示例
- Python PySpark SQL Functions date_format方法用法及代碼示例
- Python PySpark SQL Functions lit方法用法及代碼示例
- Python PySpark SQL Functions upper方法用法及代碼示例
- Python PySpark SQL Functions length方法用法及代碼示例
- Python PySpark SQL Functions dayofyear方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark SQL Functions | collect_list method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。