我有以下名为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列(名称和分数),但这不会仅保留最大值,而是返回所有列。使用数据帧是否有任何可接受的解决方案?
答案 0 :(得分:1)
您需要加入这两个数据框
joinedData = grouped_df.join(df, ['name', 'score'])