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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。