如何在Pyspark Dataframe 中按groupby后按计数过滤?

of1yzvn4  于 2023-01-12  发布在  Spark
关注(0)|答案(1)|浏览(218)

我有一个像这样的公园 Dataframe 。

data = [("1", "a"), ("2", "a"), ("3", "b"), ("4", "a")]
df = spark.createDataFrame(data).toDF(*("id", "name"))
df.show()
+---+----+
| id|name|
+---+----+
|  1|   a|
|  2|   a|
|  3|   b|
|  4|   a|
+---+----+

我按名称列对此 Dataframe 进行分组。

df.groupBy("name").count().show()
+----+-----+
|name|count|
+----+-----+
|   a|    3|
|   b|    1|
+----+-----+

现在,在按 Dataframe 进行groupby之后,我尝试过滤计数小于3的名称。例如,我希望得到如下所示的结果:

+----+-----+
|name|count|
+----+-----+
|   b|    1|
+----+-----+
flseospp

flseospp1#

试试这个:

from pyspark.sql import functions as F

data = [("1", "a"), ("2", "a"), ("3", "b"), ("4", "a")]
df = spark.createDataFrame(data).toDF(*("id", "name"))
df.groupBy("name").count().where(F.col('count') < 3).show()

F是函数的别名,你可以使用任何你想要的标识符,但是通常写为Ffunc,这只是个人习惯。
结果:

+----+-----+
|name|count|
+----+-----+
|   b|    1|
+----+-----+

相关问题