pandas 中嵌套 groupby 的 min() 操作

min() operation on nested groupby in pandas

我才刚刚开始了解 pandas,我无法解决概念上的问题。我的数据框如下:

df=pd.DataFrame({'ANIMAL':[1,1,1,1,1,2,2,2],
            'AGE_D' : [3,6,47,377,698,1,9,241],
            'AGE_Y' : [1,1,1,2,2,1,1,1]})

我想在 animal 和 age_y 中做一个嵌套组,然后 select 子组中的最小值。 所需的输出将是:

ANIMAL  AGE_Y   AGE_D
1       1       3
1       2       377
2       1       1

我可以在不嵌套动物的情况下做到这一点,例如如果我的 df2 = ANIMAL 的子集 = 1 然后

df2.loc[df2.groupby('AGE_Y')['AGE_D'].idxmin()]

但是我尝试将动物嵌套在 group by 中的所有操作都不成功。我猜我的操作顺序是错误的...... 我该怎么办?

我认为您需要向 groupby 添加列 - 按列 ANIMALAGE_Y 分组:

df = df2.loc[df2.groupby(['ANIMAL','AGE_Y'])['AGE_D'].idxmin()]
df = df[['ANIMAL','AGE_Y','AGE_D']]
print (df)
   ANIMAL  AGE_Y  AGE_D
0       1      1      3
3       1      2    377
5       2      1      1