📅  最后修改于: 2023-12-03 15:04:08.058000             🧑  作者: Mango
PySpark是一个开源的大数据处理框架,使用Python编程语言。在数据处理中,数据帧是非常重要的概念,可以看做是一张二维表。
我们经常需要对数据帧进行过滤,本文将介绍如何使用PySpark实现多列上的数据帧过滤器。
首先,我们需要安装PySpark。可以使用pip命令进行安装:
pip install pyspark
接下来,我们需要创建一个SparkSession对象。创建SparkSession可以使用以下代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("DataFrame Filter").getOrCreate()
为了演示数据帧过滤器,我们需要创建一个数据帧。我们将使用以下代码来创建一个在Python中定义的列表,然后将其转换为数据帧。
from pyspark.sql.types import StructField, StructType, IntegerType, StringType
from pyspark.sql import Row
data = [
{"name": "Alice", "age": 25, "gender": "F"},
{"name": "Bob", "age": 30, "gender": "M"},
{"name": "Charlie", "age": 35, "gender": "M"},
{"name": "David", "age": 40, "gender": "M"},
{"name": "Emily", "age": 45, "gender": "F"}
]
schema = StructType([
StructField("name", StringType(), True),
StructField("age", IntegerType(), True),
StructField("gender", StringType(), True)])
df = spark.createDataFrame([Row(**item) for item in data], schema)
现在,我们已经创建了一个包含五个记录的数据帧。
我们可以使用where()函数执行过滤。这个函数接受一个表达式,它是一个字符串,可以包含一个或多个列名和表达式。
例如,要查找名为“Bob”且年龄大于30岁的人员,可以使用以下过滤器:
df_filtered = df.where("name = 'Bob' and age > 30")
在这个例子中,我们使用了多个列名和条件。我们可以使用比较运算符(例如“>”、“<”、“==”、“!=”、“>=”、“<=”)进行比较,还可以使用逻辑运算符(例如“and”、“or”、“not”)对多个条件进行组合。
至此,我们已经介绍了如何使用PySpark进行多列数据帧过滤。我们可以使用where()函数来实现多个列的过滤,还可以使用比较运算符和逻辑运算符进行条件组合。