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


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


PySpark SQL 函数的 col(~) 方法返回 Column 对象。

参数

1. col | string

要返回的列的标签。

返回值

Column 对象。

例子

考虑以下PySpark DataFrame:

df = spark.createDataFrame([["Alex", 20], ["Bob", 30]], ["name", "age"])
df.show()



+----+---+
|name|age|
+----+---+
|Alex| 20|
| Bob| 30|
+----+---+

选择 PySpark 中的一列

要选择 name 列:

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



+----+
|name|
+----+
|Alex|
| Bob|
+----+

请注意,我们也可以选择 name 列,而无需显式使用 F.col(~),如下所示:

df.select("name").show()



+----+
|name|
+----+
|Alex|
| Bob|
+----+

创建新列

要创建一个名为 status 的新列,其值取决于 age 列:

new_col = F.when(F.col("age") < 25, "junior").otherwise("senior").alias("status")
df.select("*", new_col).show()



+----+---+------+
|name|age|status|
+----+---+------+
|Alex| 20|junior|
| Bob| 30|senior|
+----+---+------+

请注意以下事项:

  • "*" 指的是 df 的所有列。

  • 我们使用 when(~) otherwise(~) 模式有条件地填充列的值

  • 我们使用alias(~)方法为新列分配标签

注意 F.col("age") 也可以替换为 df["age"]

new_col = F.when(df["age"] < 25, "junior").otherwise("senior").alias("status")
df.select("*", new_col).show()



+----+---+------+
|name|age|status|
+----+---+------+
|Alex| 20|junior|
| Bob| 30|senior|
+----+---+------+

col 如何知道要引用哪个 DataFrame 的列?

请注意 col(~) 方法如何仅将列名称作为参数。 PySpark 延迟执行我们的代码,并等待调用某个操作(例如 show() )来运行所有转换(例如 df.select(~) )。因此,PySpark 将具有所需的上下文来破译 col(~) 所引用的 DataFrame 的列。

例如,假设我们有以下两个具有相同架构的 PySpark DataFrame:

df1 = spark.createDataFrame([["Alex", 20], ["Bob", 30]], ["name", "age"])
df2 = spark.createDataFrame([["Cathy", 40], ["Doge", 50]], ["name", "age"])
my_col = F.col("name")

让我们从 df1 中选择 name 列:

df1.select(my_col).show()



+----+
|name|
+----+
|Alex|
| Bob|
+----+

在这里, PySpark 知道我们正在引用 df1 的名称列,因为 df1 正在调用转换 ( select(~) )。

现在让我们从 df2 中选择 name 列:

df2.select(my_col).show()



+-----+
| name|
+-----+
|Cathy|
| Doge|
+-----+

同样,PySpark 知道这次 name 列引用了 df2 的列。

相关用法


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