假设我想检查同一组上的非重复名称计数,并且只想在该组中保留一个名称。
df.groupBy('job','age','gender').agg(countDistinct('name')).filter('count(DISTINCT name)>1').show()
| 工作|年龄|性别|计数(不同名称)|
| - -|- -|- -|- -|
| 工程师|二十二个|米|三个|
然后我想去这个组,只保留其中的一个名字.比方说当我们去这个组的时候,我们有这样的东西:
| 工作|年龄|性别|姓名|刻痕|
| - -|- -|- -|- -|- -|
| 工程师|二十二个|米|若翰|10个|
| 工程师|二十二个|米|狮子座|十五个|
| 工程师|二十二个|米|狮子座|十六岁|
| 工程师|二十二个|米|麦克|十七岁|
| 工程师|二十二个|米|麦克|十九个|
然后,我想只保留Mike(将John和Leo放到该组中),因此我希望该组是这样的
| 工作|年龄|性别|姓名|刻痕|
| - -|- -|- -|- -|- -|
| 工程师|二十二个|米|麦克|十七岁|
| 工程师|二十二个|米|麦克|十九个|
如何在pyspark中使用函数来实现这个?这样我就可以在不同的df中应用这个函数了?谢谢
1条答案
按热度按时间py49o6xq1#
可以使用
rank
窗口函数。