使用pandas,在每个组中找到最大(col)行

时间:2016-06-02 23:32:36

标签: pandas

与熊猫,

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得分(最大值)?

1 个答案:

答案 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