PySpark DataFrame 的 where(~)
方法返回 DataFrame 中滿足給定條件的行。
注意
where(~)
方法是 filter(~)
方法的別名。
參數
1.condition
| Column
或 string
布爾掩碼 (Column
) 或 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|
+-----+---+
基本用法
要獲取 age
大於 25 的行:
df.where("age > 25").show()
+-----+---+
| name|age|
+-----+---+
| Bob| 30|
|Cathy| 40|
+-----+---+
同樣,我們可以傳遞一個表示布爾掩碼的 Column
對象:
df.where(df.age > 25).show()
+-----+---+
| name|age|
+-----+---+
| Bob| 30|
|Cathy| 40|
+-----+---+
同樣,我們可以使用sql.functions
的 col(~)
函數來引用該列:
from pyspark.sql import functions as F
df.where(F.col("age") > 25).show()
+-----+---+
| name|age|
+-----+---+
| Bob| 30|
|Cathy| 40|
+-----+---+
複合查詢
where(~)
方法支持 AND
和 OR
語句,如下所示:
df.where("age > 25 AND name = 'Bob'").show()
+----+---+
|name|age|
+----+---+
| Bob| 30|
+----+---+
處理空值
考慮以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 20], [None, None], ["Cathy", None]], ["name", "age"])
df.show()
+-----+----+
| name| age|
+-----+----+
| Alex| 20|
| null|null|
|Cathy|null|
+-----+----+
讓我們查詢 age!=10
的行,如下所示:
df.where("age != 10").show()
+----+---+
|name|age|
+----+---+
|Alex| 20|
+----+---+
請注意,即使其他兩行在技術上具有 age!=10
,也僅返回 Alex 的行。發生這種情況是因為 PySpark 的 where(-)
方法默認過濾我們的空值。
為了防止空值行被過濾掉,我們可以像這樣執行查詢:
from pyspark.sql import functions as F
df.where((F.col("age") != 10) | (F.col("age").isNull())).show()
+-----+----+
| name| age|
+-----+----+
| Alex| 20|
| null|null|
|Cathy|null|
+-----+----+
請注意,PySpark 對空值的處理與 Pandas 不同,因為 Pandas 將保留缺失值的行,如下所示:
import pandas as pd
df = pd.DataFrame({
"col": ["a", "b", None]
})
df[df["col"] != "a"]
col
1 b
2 None
請注意col=None
行沒有被遺漏!
相關用法
- Python Pandas DataFrame where方法用法及代碼示例
- Python Pandas DataFrame wide_to_long方法用法及代碼示例
- Python PySpark DataFrame withColumnRenamed方法用法及代碼示例
- Python PySpark DataFrame withColumn方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
- Python Pandas DataFrame insert方法用法及代碼示例
- Python Pandas DataFrame lt方法用法及代碼示例
- Python Pandas DataFrame all方法用法及代碼示例
- Python Pandas DataFrame unstack方法用法及代碼示例
- Python Pandas DataFrame mean方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
- Python Pandas DataFrame tz_convert方法用法及代碼示例
- Python Pandas DataFrame isin方法用法及代碼示例
- Python PySpark DataFrame collect方法用法及代碼示例
- Python PySpark DataFrame intersect方法用法及代碼示例
- Python PySpark DataFrame dtypes屬性用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark DataFrame | where method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。