我在熊猫max()
操作中使用groupby
聚合器,想知道如何从该行返回其他值。
例如,采用以下代码:
df.groupby('occupation')['age'].max()
我得到以下结果:
我想做的是获取每个职业中具有年龄最大值的人的user_id,但是以下行仅返回user_id的最大值,而不是具有max-value的人的user_id年龄:
df.groupby('occupation')[['user_id', 'age']].max()
这些是相应的结果:
如果我做口罩,如:
df[df.Age == 62]
没有返回具有922的user_id的结果,因此它只是拉取最高值。
如何为特定分组的max()值最高的行获取user_id或其他行值?
答案 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)]