我有一个这样的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
是函数的别名,您可以使用任何标识符,但通常写成F
或func
,这只是个人习惯。
结果:
+----+-----+
|name|count|
+----+-----+
| b| 1|
+----+-----+