Skip to main content
 首页 » 编程设计

python之Pandas 数据框中多列的聚合

2025年05月04日15yjmyzz

数据:

z = pd.DataFrame({'a':[1,1,1,2,2,3,3],'b':[3,4,5,6,7,8,9], 'c':[10,11,12,13,14,15,16]}) 

我的代码:

gbz = z.groupby('a') 
f1 = lambda x: x.loc[x['b'] > 4]['c'].mean() 
f2 = lambda x: x.mean() 
f3 = {'I don't know what should I write here':{'name1':f1}, 'b':{'name2': f2}} 
list1 = gbz.agg(f3) 

问题:

如何在函数“f1”中使用多个列? (此功能需要groupby对象的两列)

预期结果:

     name1  name2 
1    12.0   4 
2    13.5   6.5 
3    15.5   8.5 

请您参考如下方法:

agg 函数中的嵌套字典是deprecated .您可能会做的是使用 groupby.apply 并为每个组返回一个正确索引的系列以用于重命名目的:

(z.groupby('a') 
  .apply(lambda g: pd.Series({ 
    'name1': g.c[g.b > 4].mean(), 
    'name2': g.b.mean() 
}))) 
 
#  name1    name2 
#a       
#1  12.0    4.0 
#2  13.5    6.5 
#3  15.5    8.5