Pyspark groupby 和 return 整行

Pyspark groupby and return the whole row

我有以下名为 df 的数据框:

name    score    data1    data2
Name1   23       'a'      'b'
Name2   2        'c'      'd'
Name1   100      'b'      'f'
Name3   5        'a'      'f'
Name2   6        'e'      'g'
Name3   500      'f'      'n' 

想要的结果:

查找每个名称的最高分数和 return 相关数据(数据 1 和数据 2)作为字典:

grouped_df = df.groupby('name').agg({'score':'max'})

这会产生:

name   score 
Name1  100
Name2  6
Name3  500

但我最想得到的是

name   score  data1  data2
Name1  100    'b'    'f'
Name2  6      'e'    'g'
Name3  500    'f'    'n'

或者:

dict = {'b':1, 'e':1,'f':2,'g':1}

我尝试通过 2 列(名称和分数)连接 df 和 grouped_df,但这不仅保留最大值,它 return 包含所有列。使用数据框是否有任何可接受的解决方案?

您需要加入两个数据框

joinedData = grouped_df.join(df, ['name', 'score'])