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