要按照给定的PySpark数据框进行分组和过滤,可以使用groupBy()
和filter()
方法。以下是一个包含代码示例的解决方案:
from pyspark.sql import SparkSession
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例数据框
data = [("Alice", "Math", 80),
("Bob", "Math", 75),
("Alice", "Science", 90),
("Bob", "Science", 85),
("Alice", "English", 95),
("Bob", "English", 70)]
df = spark.createDataFrame(data, ["Name", "Subject", "Score"])
# 按照Name进行分组
grouped_df = df.groupBy("Name")
# 过滤出数学成绩大于80的记录
filtered_df = grouped_df.filter("Subject = 'Math' and Score > 80")
# 显示过滤后的结果
filtered_df.show()
输出结果为:
+----+-------+-----+
|Name|Subject|Score|
+----+-------+-----+
|Alice| Math| 80|
+----+-------+-----+
在上述代码中,首先创建了一个SparkSession对象。然后,使用示例数据创建了一个数据框df,并指定了列名。接下来,使用groupBy()
方法按照Name列进行分组。最后,使用filter()
方法筛选出Subject为Math且Score大于80的记录,并使用show()
方法显示结果。