我從一個 csv 檔案開始,轉換為下面的資料框:

繼續處理資料框并使用 PYSPARK,我需要在sensorID列中找到至少有兩條滿足條件 ( PM10 > 50) 的記錄的值。
然后,我需要一個輸出,其值為sensorID和count滿足條件的次數。
輸出應該是:sensorID: s1; 2(PM10>50的計數)
我試過:
rdd.select("sensorID").where(col("PM10") > 50).count().show()
這給了我一個錯誤。我試過沒有.show(),但我不能只選擇至少有兩條記錄的值(我試過groupByand orderBy,但它總是錯誤的)。
我在將它們正確組合在一起時遇到問題。我希望你能解釋我哪里出錯了,謝謝。
uj5u.com熱心網友回復:
使用條件總和聚合:
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|
# -------- -----
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/410205.html
標籤:
下一篇:替換字典中的鍵值
