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

Pandas 如何为groupby返回的max()值获取其他行值,pandas,pandas-groupby,Pandas,Pandas Groupby,我正在pandasgroupby操作中使用max()聚合器,我想知道如何从该行返回其他值 例如,以以下代码为例: df.groupby('occupation')['age'].max() 我得到以下结果: 我想做的是获取每个职业中年龄最大值的人的用户id,但下面的行只返回用户id的最高值,而不是年龄最大值的人的用户id: df.groupby('occupation')[['user_id', 'age']].max() 以下是相应的结果: 如果我做一个面具,比如: df[df.Age

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

例如,以以下代码为例:

df.groupby('occupation')['age'].max()
我得到以下结果:

我想做的是获取每个职业中年龄最大值的人的用户id,但下面的行只返回用户id的最高值,而不是年龄最大值的人的用户id:

df.groupby('occupation')[['user_id', 'age']].max()
以下是相应的结果:

如果我做一个面具,比如:

df[df.Age == 62]
没有返回用户id为922的结果,因此它只是拉取最高值


如何获取特定分组中具有最高max()值的行的用户id或其他行值?

您需要
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)]

您需要
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)]

嘿,乔纳森,谢谢你发布的显示输出的帖子,你能不能也提供df的样子?嘿,乔纳森,谢谢发布的显示输出的帖子,你能不能也提供df的样子?