PySpark SQL 函数的 collect_set(~)
方法返回列中的一组唯一值。空值将被忽略。
注意
使用 collect_list(~)
来获取允许重复的值列表。
参数
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_set("group")).show()
+------------------+
|collect_set(group)|
+------------------+
| [C, B, A]|
+------------------+
同样,您也可以将 Column
对象传递给 collect_set(~)
:
import pyspark.sql.functions as F
df.select(F.collect_set(df.group)).show()
+------------------+
|collect_set(group)|
+------------------+
| [C, B, A]|
+------------------+
请注意null
值没有出现在结果集中。
将集合作为标准列表
要将集合作为标准列表:
list_rows = df.select(F.collect_set(df.group)).collect()
list_rows[0][0]
['C', 'B', 'A']
这里,PySpark DataFrame 的 collect()
方法返回Row
对象的列表。由于 collect_set(~)
的性质,该列表保证长度为一。 Row
对象包含该列表,因此我们需要包含另一个 [0]
。
获取PySpark中每个组的一组列值
方法 collect_set(~)
通常在聚合上下文中使用。考虑与之前相同的 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_set("group")).show()
+-----+------------------+
| name|collect_set(group)|
+-----+------------------+
| Alex| [B, A]|
| Bob| [A]|
|Cathy| [C]|
+-----+------------------+
相关用法
- Python PySpark SQL Functions collect_list方法用法及代码示例
- 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_set method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。