Pyspark groupby并返回整行

时间:2017-04-25 13:16:17

标签: python dataframe pyspark-sql

我有以下名为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' 

期望的结果:

查找每个名称的最高分数,并将相关数据(data1和数据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}

我尝试将df和grouped_df加入2列(名称和分数),但这不会仅保留最大值,而是返回所有列。使用数据帧是否有任何可接受的解决方案?

1 个答案:

答案 0 :(得分:1)

您需要加入这两个数据框

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