![](/img/trans.png)
[英]how can I group rows from a DataFrame into a single row separated by a delimiter Scala Spark?
[英]How to mark a row in a group of rows in spark dataframe
嗨,我想根據一些規則從記錄組中標記一行。 我有一個如下的數據框
id price date
a 100 2016
a 200 2016
a 100 2016
b 100 2016
b 100 2015
我的輸出數據框應該是
id price date
a 200 2016
b 100 2016
在給定的數據幀中,規則基於兩列。從id(a,b)組開始,第一個基於最大價格,第二個基於最近日期。我的實際規則更復雜,涉及很多其他列也是。
解決這類問題的最佳方法是什么。 需要根據一些規則從一組行中選擇一行。任何幫助將不勝感激。 謝謝
嘗試這個。
val df = Seq(("a",100,2016), ("a",200,2016), ("a",100,2016), ("b",100,2016),("b",100,2015)).toDF("id", "price", "date")
df.show
val df1 = df.select($"id", struct($"price", $"date").alias("data")).groupBy($"id").agg(max("data").alias("data")).select($"id", $"data.price", $"data.date")
df1.show
您將獲得如下輸出。
+---+-----+----+
| id|price|date|
+---+-----+----+
| b| 100|2016|
| a| 200|2016|
+---+-----+----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.