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
添加列 - 按列 ANIMAL
和 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
我才刚刚开始了解 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
添加列 - 按列 ANIMAL
和 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