Select 一个列值至少有两条带条件的记录 (PYSPARK)

Select a column value with at least two records with a condition (PYSPARK)

我从一个 csv 文件开始,转换为以下数据框:

继续处理数据框并使用 PYSPARK,我需要在 sensorID 列中找到至少有两条记录满足条件 (PM10 > 50) 的值。

然后,我需要输出值 sensorID 和满足条件次数的 count

输出应该是:sensorID: s1; 2 (PM10>50)

我试过了:

rdd.select("sensorID").where(col("PM10") > 50).count().show()

这给了我一个错误。 我试过没有.show(),但我不能select只有至少有两条记录的值(我试过groupByorderBy,但它总是错的)。

我在将它们正确组合在一起时遇到了问题。 希望你能告诉我我哪里出错了,谢谢。

使用条件求和聚合:

import pyspark.sql.functions as F

df = spark.createDataFrame([
    ("s1", "2016-01-01", 20.5), ("s2", "2016-01-01", 30.1), ("s1", "2016-01-02", 60.2),
    ("s2", "2016-01-02", 20.4), ("s1", "2016-01-03", 55.5), ("s2", "2016-01-03", 52.5)
], ["sensorId", "date", "PM10"])

df1 = df.groupBy("sensorId").agg(
    F.sum(F.when(F.col("PM10") > 50., 1)).alias("count")
).filter("count > 1")

df1.show()
#+--------+-----+
#|sensorId|count|
#+--------+-----+
#|      s1|    2|
#+--------+-----+