PySpark DataFrame 的selectExpr(~)
方法根據指定的 SQL 表達式返回新的DataFrame。
參數
1. *expr
| string
SQL 表達式。
返回值
一個新的 PySpark 數據幀。
例子
考慮以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 20], ["Bob", 30], ["Cathy", 40]], ["name", "age"])
df.show()
+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Bob| 30|
|Cathy| 40|
+-----+---+
在 PySpark DataFrame 中使用 SQL 表達式選擇數據
要獲取新的 DataFrame,其中 name
列的值是大寫的:
df.selectExpr("upper(name) AS upper_name", "age * 2").show()
+----------+---------+
|upper_name|(age * 2)|
+----------+---------+
| ALEX| 40|
| BOB| 60|
| CATHY| 80|
+----------+---------+
我們應該使用 selectExpr(~)
而不是 select(~)
來提取列,同時對它們執行一些簡單的轉換 - 就像我們在這裏所做的那樣。
注意
pyspark.sql.functions
庫中存在類似的方法 expr(~)
。 expr(~)
也接受 SQL 表達式作為參數,但不同之處在於返回類型是 PySpark Column
。 selectExpr(~)
和 expr(~)
的以下用法是等效的:
from pyspark.sql import functions as F
# The below is the same as df.selectExpr("upper(name)").show()
df.select(F.expr("upper(name)")).show()
+-----------+
|upper(name)|
+-----------+
| ALEX|
| BOB|
| CATHY|
+-----------+
一般來說,您應該使用 selectExpr(~)
而不是 expr(~)
,因為:
-
您不必導入
pyspark.sql.functions
庫。 -
語法更短更清晰
解析更複雜的 SQL 表達式
考慮以下PySpark DataFrame:
df = spark.createDataFrame([['Alex',20],['Bob',60]], ['name','age'])
df.show()
+----+---+
|name|age|
+----+---+
|Alex| 20|
| Bob| 60|
+----+---+
我們可以使用AND
和LIKE
等經典SQL子句來製定更複雜的表達式:
df.selectExpr('age < 30 AND name LIKE "A%" as result').show()
+------+
|result|
+------+
| true|
| false|
+------+
在這裏,我們檢查 age
小於 30
並且 name
以字母 A
開頭的行。
請注意,我們可以像這樣實現相同的邏輯:
col = ((df.age < 30) & (F.col('name').startswith('A'))).alias('result')
df.select(col).show()
+------+
|result|
+------+
| true|
| false|
+------+
我個人更喜歡使用selectExpr(~)
,因為語法更清晰,對於熟悉 SQL 的人來說意義也很直觀。
檢查 PySpark 列中是否存在值
selectExpr(~)
的另一個應用是檢查 PySpark 列中是否存在值。請在這裏查看食譜。
相關用法
- Python Pandas DataFrame select_dtypes方法用法及代碼示例
- Python PySpark DataFrame select方法用法及代碼示例
- Python Pandas DataFrame set_axis方法用法及代碼示例
- Python Pandas DataFrame set_index方法用法及代碼示例
- Python Pandas DataFrame sem方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python PySpark DataFrame sampleBy方法用法及代碼示例
- Python PySpark DataFrame show方法用法及代碼示例
- Python Pandas DataFrame stack方法用法及代碼示例
- Python Pandas DataFrame shift方法用法及代碼示例
- Python Pandas DataFrame sort_index方法用法及代碼示例
- Python Pandas DataFrame size屬性用法及代碼示例
- Python Pandas DataFrame swapaxes方法用法及代碼示例
- Python PySpark DataFrame sort方法用法及代碼示例
- Python PySpark DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame sub方法用法及代碼示例
- Python Pandas DataFrame sum方法用法及代碼示例
- Python Pandas DataFrame std方法用法及代碼示例
- Python PySpark DataFrame summary方法用法及代碼示例
- Python Pandas DataFrame shape屬性用法及代碼示例
- Python Pandas DataFrame sort_values方法用法及代碼示例
- Python Pandas DataFrame slice_shift方法用法及代碼示例
- Python Pandas DataFrame squeeze方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark DataFrame | selectExpr method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。