如何在Pyspark数据框中按分组后计数过滤?



我有一个这样的pyspark数据框架。

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|
+---+----+

按名称列对数据框进行分组。

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

现在,在对数据框进行分组之后,我将尝试过滤计数低于3的名称。例如,这里我希望得到这样的东西:

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

try this:

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|
+----+-----+

相关内容

  • 没有找到相关文章

最新更新