📅  最后修改于: 2023-12-03 14:55:39.236000             🧑  作者: Mango
PySpark是Apache Spark的Python API,提供了强大的分布式计算能力和易于使用的数据分析工具。PySpark数据框是一个二维表格,类似于关系型数据库的表格。在数据分析过程中,我们通常需要基于某些条件进行行过滤来得到所需的数据子集。
本文将介绍如何使用PySpark数据框的filter()函数根据列值过滤行。
首先,我们需要创建一个包含多行和多列的数据框。在本例中,我们将使用PySpark内置的iris数据集。
from pyspark.sql import SparkSession
# 创建SparkSession对象
spark = SparkSession.builder.appName('filter').getOrCreate()
# 加载iris数据集
iris = spark.read.csv('iris.csv', header=True, inferSchema=True)
# 显示前10行
iris.show(10)
在这个示例中,我们使用SparkSession对象来创建一个Spark应用程序,并加载iris数据集。数据集包含四个特征(SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm)和一个标签(Species)。使用.show()函数,我们可以显示数据集的前10行。
现在,我们将使用filter()函数来过滤数据框。filter函数接收一个返回布尔值的表达式作为参数,并返回满足表达式的所有行。
例如,我们可以使用filter()函数过滤出标签(Species)为‘Iris-setosa’的所有行。
# 保留标签(Species)为‘Iris-setosa’的所有行
setosa = iris.filter(iris.Species == 'Iris-setosa')
# 显示前10行
setosa.show(10)
在这个示例中,我们使用filter()函数和布尔表达式(iris.Species == 'Iris-setosa')来过滤出标签(Species)为‘Iris-setosa’的所有行。过滤结果存储在名为setosa的新数据框中,并使用.show()函数显示前10行。
通过使用PySpark数据框的filter()函数,我们可以轻松地根据列值过滤行。这是一项非常有用的技能,在数据分析和数据挖掘过程中具有重要的作用。