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只有至少有两条记录的值(我试过groupBy
和orderBy
,但它总是错的)。
我在将它们正确组合在一起时遇到了问题。
希望你能告诉我我哪里出错了,谢谢。
使用条件求和聚合:
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|
#+--------+-----+
我从一个 csv 文件开始,转换为以下数据框:
继续处理数据框并使用 PYSPARK,我需要在 sensorID
列中找到至少有两条记录满足条件 (PM10 > 50
) 的值。
然后,我需要输出值 sensorID
和满足条件次数的 count
。
输出应该是:sensorID: s1; 2 (PM10>50)
我试过了:
rdd.select("sensorID").where(col("PM10") > 50).count().show()
这给了我一个错误。
我试过没有.show()
,但我不能select只有至少有两条记录的值(我试过groupBy
和orderBy
,但它总是错的)。
我在将它们正确组合在一起时遇到了问题。 希望你能告诉我我哪里出错了,谢谢。
使用条件求和聚合:
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|
#+--------+-----+