当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PySpark SQL Functions first方法用法及代码示例


PySpark 的 SQL 函数 first(~) 方法返回 PySpark DataFrame 的指定列的第一个值。

参数

1.col | stringColumn 对象

感兴趣的列标签或 Column 对象。

2. ignorenulls | boolean | optional

是否忽略空值。默认情况下,ignorenulls=False

返回值

PySpark SQL 列对象 (pyspark.sql.column.Column)。

例子

考虑以下PySpark DataFrame:

columns = ["name", "age"]
data = [("Alex", 15), ("Bob", 20), ("Cathy", 25)]
df = spark.createDataFrame(data, columns)
df.show()



+-----+---+
| name|age|
+-----+---+
| Alex| 15|
|  Bob| 20|
|Cathy| 25|
+-----+---+

获取 PySpark DataFrame 中列的第一个值

要获取 name 列的第一个值:

import pyspark.sql.functions as F
df.select(F.first(df.name)).show()



+-----------+
|first(name)|
+-----------+
|       Alex|
+-----------+

获取 PySpark DataFrame 中列的第一个非空值

考虑以下带有空值的 PySpark DataFrame:

columns = ["name", "age"]
data = [("Alex", None), ("Bob", 20), ("Cathy", 25)]
df = spark.createDataFrame(data, columns)
df.show()



+-----+----+
| name| age|
+-----+----+
| Alex|null|
|  Bob|  20|
|Cathy|  25|
+-----+----+

默认为ignorenulls=False,这意味着无论是否为null,都返回第一个值:

df.select(F.first(df.age)).show()



+----------+
|first(age)|
+----------+
|      null|
+----------+

要返回第一个非空值:

df.select(F.first(df.age, ignorenulls=True)).show()



+----------+
|first(age)|
+----------+
|        20|
+----------+

获取PySpark中每组的第一个值

first(~) 方法在聚合中也很有用。考虑以下PySpark DataFrame:

columns = ["name", "class"]
data = [("Alex", "A"), ("Alex", "B"), ("Bob", None), ("Bob", "A"), ("Cathy", "C")]
df = spark.createDataFrame(data, columns)
df.show()



+-----+-----+
| name|class|
+-----+-----+
| Alex|    A|
| Alex|    B|
|  Bob| null|
|  Bob|    A|
|Cathy|    C|
+-----+-----+

要获取每个聚合的第一个值:

df.groupby("name").agg(F.first("class")).show()



+-----+------------+
| name|first(class)|
+-----+------------+
| Alex|           A|
|  Bob|        null|
|Cathy|           C|
+-----+------------+

在这里,我们按 name 进行分组,然后对于每个组,我们获取 class 列中出现的第一个值。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark SQL Functions | first method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。