📅  最后修改于: 2023-12-03 14:45:52.698000             🧑  作者: Mango
在 PySpark 中,你可以使用多个条件来过滤数据集,以便筛选出符合特定条件的子集。这对于数据处理和分析非常有用。下面是一些使用 PySpark 进行多个条件子集过滤的方法。
filter
方法可以使用 DataFrame 的 filter
方法来筛选具有多个条件的数据子集。
# 导入必要的库
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
# 创建 SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例数据集
data = [("Alice", 25, "female"),
("Bob", 30, "male"),
("Charlie", 35, "male"),
("Diana", 40, "female")]
# 将示例数据集转换为 DataFrame
df = spark.createDataFrame(data, ["name", "age", "gender"])
# 使用多个条件过滤数据集,并返回筛选后的子集
filtered_df = df.filter((col("age") > 30) & (col("gender") == "male"))
# 显示结果
filtered_df.show()
输出结果:
+-------+---+------+
| name|age|gender|
+-------+---+------+
|Charlie| 35| male|
+-------+---+------+
还可以使用 SQL 查询语句来过滤数据集,这样更加灵活。
# 创建临时视图
df.createOrReplaceTempView("people")
# 使用 SQL 查询语句进行条件过滤
filtered_df = spark.sql("SELECT * FROM people WHERE age > 30 AND gender = 'male'")
# 显示结果
filtered_df.show()
输出结果:
+-------+---+------+
| name|age|gender|
+-------+---+------+
|Charlie| 35| male|
+-------+---+------+
where
方法另一种过滤数据集的常用方法是使用 DataFrame 的 where
方法。
# 使用多个条件过滤数据集,并返回筛选后的子集
filtered_df = df.where((col("age") > 30) & (col("gender") == "male"))
# 显示结果
filtered_df.show()
输出结果:
+-------+---+------+
| name|age|gender|
+-------+---+------+
|Charlie| 35| male|
+-------+---+------+
上述方法中的 col
函数用于引用 DataFrame 中的列,可以使用其他函数和操作符来构建更复杂的条件。
总结:PySpark 中可以使用多种方法来实现多个条件的子集过滤,包括使用 filter
方法、SQL 查询语句和 where
方法。选择合适的方法取决于你对 Spark 的熟悉程度和个人偏好。以上提供的示例能够帮助你筛选出符合特定条件的数据子集。