簡體   English   中英

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM