【发布时间】:2019-09-19 21:21:19
【问题描述】:
我有以下数据框-
>>> my_df.show(3)
+------------+---------+-------+--------------+
| user_id| address| type|count| country|
+------------+---------+-------+-----+--------+
| ABC123| yyy,USA| animal| 2| USA|
| ABC123| xxx,USA| animal| 3| USA|
| qwerty| 55A,AUS| human| 3| AUS|
| ABC123| zzz,RSA| animal| 4| RSA|
+------------+---------+-------+--------------+
如何汇总此数据框以获得以下结果-
>>> new_df.show(3)
+------------+---------+-------+--------------+
| user_id| address| type|count| country|
+------------+---------+-------+-----+--------+
| qwerty| 55A,AUS| human| 3| AUS|
| ABC123| xxx,USA| animal| 5| USA|
+------------+---------+-------+--------------+
对于给定的user_id:
- 获取计数总和最高的
country - 对于第 1 步得到的
country,获取计数最高的address
我猜我必须将 my_df 拆分为 2 个不同的数据帧,并分别获取 country 和 address。但我并不完全知道它的语法。感谢您的帮助。谢谢。
【问题讨论】:
-
我会尝试窗口函数 -
.select中的first,然后是.groupby和agg,按 user_id 和您想从first获取的 2 列。这可能会有所帮助:stackoverflow.com/questions/35142216/… -
我不太明白那个答案..
-
请看下面我的回答。
标签: python-3.x dataframe pyspark