如何获取由groupby返回的max()值的其他行值

时间:2019-07-12 20:03:07

标签: pandas pandas-groupby

我在熊猫max()操作中使用groupby聚合器,想知道如何从该行返回其他值。

例如,采用以下代码:

df.groupby('occupation')['age'].max()

我得到以下结果:

enter image description here

我想做的是获取每个职业中具有年龄最大值的人的user_id,但是以下行仅返回user_id的最大值,而不是具有max-value的人的user_id年龄:

df.groupby('occupation')[['user_id', 'age']].max()

这些是相应的结果:

enter image description here

如果我做口罩,如:

df[df.Age == 62]

没有返回具有922的user_id的结果,因此它只是拉取最高值。

如何为特定分组的max()值最高的行获取user_id或其他行值?

1 个答案:

答案 0 :(得分:2)

您要idxmax

idx = df.groupby('occupation')['age'].idxmax()

然后是最大年龄的人

df.loc[idx]

为每个组分配一个一个人。如果要所有个年龄最大的人,请使用transform

max_ages = df.groupby('occupation')['age'].transform('max')

df[df['age'].eq(max_ages)]