📜  Python PySpark – 多列上的数据帧过滤器(1)

📅  最后修改于: 2023-12-03 15:04:08.058000             🧑  作者: Mango

Python PySpark – 多列上的数据帧过滤器

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()函数来实现多个列的过滤,还可以使用比较运算符和逻辑运算符进行条件组合。