gpt4 book ai didi

apache-spark - 如何根据特定组的计数删除 Spark 数据集中的行

转载 作者:行者123 更新时间:2023-12-02 19:10:39 26 4
gpt4 key购买 nike

我在 Spark 中有一个数据框- enter image description here

我想根据特定计数来过滤行。我的意思是,我只想保留那些人数>1的行。

所以所需的输出看起来像 - enter image description here

所需的输出将删除 S2 和 S4 的行,因为它们的人员计数小于 2。

如果有人能帮助我解决这个问题,那就太好了。预先感谢:)

最佳答案

您可以在窗口上使用“人数统计”并过滤掉以下行。

from pyspark.sql.window import Window
from pyspark.sql import functions as F

df = spark.createDataFrame([
("S1", "S1_P1"),
("S1", "S1_P2"),
("S1", "S1_P3"),
("S2", "S2_P1"),
("S3", "S3_P1"),
("S3", "S3_P2"),
("S4", "S4_P1")
],["State", "Person"])

window = Window.partitionBy("State")

df.withColumn("count", F.count("Person").over(window))\
.filter(F.col("count") > 1).drop("count").show()

输出:

+-----+------+
|State|Person|
+-----+------+
| S3| S3_P1|
| S3| S3_P2|
| S1| S1_P1|
| S1| S1_P2|
| S1| S1_P3|
+-----+------+

关于apache-spark - 如何根据特定组的计数删除 Spark 数据集中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64329766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com