Python Pyspark分区依据、分组依据,用于数据筛选

Python Pyspark分区依据、分组依据,用于数据筛选,python,pyspark,Python,Pyspark,假设您有一个(大)数据集,其中的一部分可能如下所示(在真实数据集中有更多列) 我想使用pyspark按B、C和D过滤数据,这样我就可以计算E的统计数据 例如,在“房屋A”下分组最终将产生以下两个分区: +---+-----+---------+----------+-----------+----------------+ | | i | B | C | D | E | +---+-----+---------+----

假设您有一个(大)数据集,其中的一部分可能如下所示(在真实数据集中有更多列)

我想使用pyspark按B、C和D过滤数据,这样我就可以计算E的统计数据

例如,在“房屋A”下分组最终将产生以下两个分区:

+---+-----+---------+----------+-----------+----------------+
|   |  i  |    B    |    C     |     D     |       E        |
+---+-----+---------+----------+-----------+----------------+
|   | .   | House A | Garden X | Terrace C | 90             |
|   | .   | House A | Garden X | Terrace C | 80             |

实际上,我希望过滤具有独特特征的数据子集

我对如何使用PySpark管理此问题感到非常困惑。我使用了groupBy和partitionBy函数,但我无法通过第一个“筛选”操作,例如,为“House a”生成子表。我被告知要查看PySpark的“窗口”函数,但我看到它主要应用于在给定表的连续行中进行计算的问题

注意:我不想存储过滤后的数据表。 我只想计算一个汇总统计,它可以是E值的平均值

谢谢你的帮助


SC

显然,您只需要执行
分组操作

从pyspark.sql导入函数为F
df.groupBy(“B”、“C”、“D”).agg(F.avg(“E”))
+---+-----+---------+----------+-----------+----------------+
|   |  i  |    B    |    C     |     D     |       E        |
+---+-----+---------+----------+-----------+----------------+
|   | .   | House A | Garden X | Terrace C | 90             |
|   | .   | House A | Garden X | Terrace C | 80             |
|   | .   | House A | Garden X | Terrace D | 60             |