如何对 pandas 中的不同列使用不同的聚合函数? - python
how to use different aggregate functions for separate columns in pandas? - python
我有这个数据框:
>>> df = pd.DataFrame({'c1':['a','a','a','a','b','b','b','b'], 'c2':['x','y','x','y','x','y','x','y'], 'sum':[1,1,0,1,0,0,1,0], 'mean':[12,14,11,13,12,23,12,31]})
我正在尝试使用两个单独的聚合函数,我知道我可以这样做:
>>> df.groupby(['c1','c2'])['sum','mean'].agg([np.sum,np.mean])
>>> df
sum mean
sum mean sum mean
c1 c2
a x 1 0.5 23 11.5
y 2 1.0 27 13.5
b x 1 0.5 24 12.0
y 0 0.0 54 27.0
但它在 sum
中创建了不必要的 "mean" 列,在 mean
中创建了 "sum" 列。有没有办法实现这个结果:
sum mean
c1 c2
a x 1 11.5
y 2 13.5
b x 1 12.0
y 0 27.0
我试过了:
>>> df.groupby(['c1','c2'])['sum','mean'].agg({'sum':np.sum, 'mean':np.mean})
但它引发了 KeyError
异常。
您可以使用 {column_name: agg_func}
将字典传递给 .agg
df.groupby(['c1', 'c2']).agg({'mean': np.mean, 'sum': np.sum})
sum mean
c1 c2
a x 1 11.5
y 2 13.5
b x 1 12.0
y 0 27.0
我有这个数据框:
>>> df = pd.DataFrame({'c1':['a','a','a','a','b','b','b','b'], 'c2':['x','y','x','y','x','y','x','y'], 'sum':[1,1,0,1,0,0,1,0], 'mean':[12,14,11,13,12,23,12,31]})
我正在尝试使用两个单独的聚合函数,我知道我可以这样做:
>>> df.groupby(['c1','c2'])['sum','mean'].agg([np.sum,np.mean])
>>> df
sum mean
sum mean sum mean
c1 c2
a x 1 0.5 23 11.5
y 2 1.0 27 13.5
b x 1 0.5 24 12.0
y 0 0.0 54 27.0
但它在 sum
中创建了不必要的 "mean" 列,在 mean
中创建了 "sum" 列。有没有办法实现这个结果:
sum mean
c1 c2
a x 1 11.5
y 2 13.5
b x 1 12.0
y 0 27.0
我试过了:
>>> df.groupby(['c1','c2'])['sum','mean'].agg({'sum':np.sum, 'mean':np.mean})
但它引发了 KeyError
异常。
您可以使用 {column_name: agg_func}
.agg
df.groupby(['c1', 'c2']).agg({'mean': np.mean, 'sum': np.sum})
sum mean
c1 c2
a x 1 11.5
y 2 13.5
b x 1 12.0
y 0 27.0