當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。