Skip to main content
 首页 » 编程设计

python之应用多种功能的 PANDAS Group By

2025年05月04日15freeliver54

例如,我有一个具有以下结构的 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 字段进行分组,sex 字段不变,年龄值的 min(),排名值的 min(),以及出现在 min( ) 的等级值。

我知道可以将多个聚合函数传递给字典中的 groupby,但是我不明白如何处理常量值或取决于 groupby 另一个字段中函数结果的值。

请您参考如下方法:

在你预期的输出中,它是 rank 的 min ,但在你的解释中你提到它是 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