Pandas 如何为groupby返回的max()值获取其他行值
我正在pandasPandas 如何为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
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的样子?