【问题标题】:min() operation on nested groupby in pandas熊猫中嵌套 groupby 的 min() 操作
【发布时间】:2017-03-22 07:41:17
【问题描述】:

我刚刚开始了解 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 中做一个嵌套组,然后选择子组上的最小值。 所需的输出将是:

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 中的所有事情都没有成功。我猜我的操作顺序是错误的...... 我该怎么办?

【问题讨论】:

  • 复制:stackoverflow.com/questions/23394476/… 基本上唯一的区别是你想要在多个列上分组
  • 看过解决方案后,我可以看出这是多么相似,但除非您知道,否则很难推断出来。我实际上正在查看您发布的主题,但在嵌套分组时遇到了问题。
  • 基本上这里要注意的是,您可以在多个列上进行分组,这看起来就像您在这里缺少的步骤

标签: pandas group-by nested grouping min


【解决方案1】:

我认为您需要将列添加到 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

【讨论】:

  • 非常感谢!我想我真的很接近(但到目前为止......)。这是一种享受。
猜你喜欢
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 2017-08-04
  • 2020-10-12
  • 2018-05-05
  • 2019-02-24
  • 1970-01-01
相关资源
最近更新 更多