min () операция над вложенными groupby в 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, а затем выбрать min в подгруппе.
Желаемый результат будет тогда:



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


Я могу сделать это без вложенности в animal, например, если мой df2 = подмножество для ANIMAL=1
тогда



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


Но все, что я пытался сделать с гнездованием животного в группе, оказалось безуспешным. Я предполагаю, что мой заказ из операций это неправильно...
Как я должен это сделать?
617   1  

1 ответ:

Я думаю, что вам нужно добавить столбцы в groupby - group by columns ANIMAL and AGE_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

Comments

    Ничего не найдено.