我有一个具有以下结构的PANDAS数据框,例如:

id,sex,age,rank,skill
1,M,9,1,A
1,M,8,2,G
1,M,10,3,F
2,F,10,3,M
2,F,8,4,W
2,F,6,4,O
3,M,5,1,Q
3,M,4,3,N
3,M,9,4,Y


在对数据帧执行groupby / apply操作之后,我期望的输出是:

id,sex,age,rank,skill
1,M,8,1,A
2,F,6,3,M
3,M,4,1,Q


换句话说,我希望对id字段进行分组,性别字段不变,年龄值的min(),等级值的min()以及等级的min()处存在的技能值值。

我了解可以在dict中将多个agg函数传递给groupby,但是它不知道如何处理恒定值或取决于groupby另一个字段中函数结果的值。

最佳答案

在您预期的输出中,它是minrank,但是在您的解释中您提到的是max

我的回答基于您的预期输出

df.groupby(['id','sex'],as_index=False).agg({'age':'min','rank':'min'}).\
merge(df.drop('age',1),on=['id','sex','rank'],how='left')

Out[931]:
   id sex  age  rank skill
0   1   M    8     1     A
1   2   F    6     3     M
2   3   M    4     1     Q

关于python - 具有多种功能的PANDAS Group By,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45723048/

10-11 19:33
查看更多