与熊猫,
CREATE TABLE ForgeRock
(`id` int, `productName` varchar(7), `score` int)
;
INSERT INTO ForgeRock
(`id`, `productName`, `score`)
VALUES
(1, 'OpenIDM', '8'),
(2, 'OpenAM', '3'),
(3, 'OpenDJ', '7'),
(4, 'OpenDJ', '4'),
(5, 'OpenAM', '9')
;
想要的结果是
1 OpenIDM 8
3 OpenDJ 7
5 OpenAM 9
要获得每组的最高分数,
df.groupby('productName')['score'].max()
结果是:
OpenAM 9
OpenDJ 7
OpenIDM 8
结果是对的但是,我需要完整的colmuns - >也是。 我如何获得id和productName得分(最大值)?
答案 0 :(得分:0)
您希望使用idxmax
代替max
。这样,您就可以获得发生最大值的索引值。然后,您可以使用它们来访问数据帧的整个行。
max_idx = df.groupby('productName', as_index=False)['score'].idxmax()
print df.loc[max_idx]
id productName score
4 5 OpenAM 9
2 3 OpenDJ 7
0 1 OpenIDM 8