使用 group by 计算聚合平均值
compute aggregated mean with group by
我有这样一个数据框数据:
Cluster VolumePred ConversionPred
0 0-3 8.0 7.0
1 0-3 175.0 85.0
2 0-3 17 4.0
3 4-6 14 4.0
4 7-9 29.0 19.0
我需要添加一列“meanKPI”,它等于“ConversionPred”的总和除以按“Cluster”分组的“VolumePred”的总和。
我试过这个:
def KPI_Pred_mean(x, y):
#print (x)
return (x.sum()/y.sum())
#data.ConversionPred.sum()/sum_vol_pred
df3=data.groupby(['Cluster'])['ConversionPred', 'VolumePred'].apply(KPI_Pred_mean).reset_index()
但是我得到一个错误:
TypeError: KPI_Pred_mean() missing 1 required positional argument: 'y'
我该如何解决这个问题?
将你的调用apply
自定义功能改为
out = df.groupby(['Cluster']).apply(lambda x : KPI_Pred_mean(x['ConversionPred'],x['VolumePred'])) .reset_index(name = 'KPI_Pred_mean')
Out[267]:
Cluster KPI_Pred_mean
0 0-3 0.480000
1 4-6 0.285714
2 7-9 0.655172
KPI_Pred_mean
需要两个参数,您将函数作为 lambda 传递给 apply
的方式可以重写为:.apply(lambda x: KPI_Pred_mean(x)
。这意味着它缺少 y
变量。您可以通过两种方式重写代码:
1 - 重写 lambda
df3=data.groupby(['Cluster'])['ConversionPred', 'VolumePred'].apply(lambda x: KPI_Pred_mean(x["ConversionPred"], x["volumePred"]).reset_index(name = 'KPI_Pred_mean')
2 - 重写你的函数
def KPI_Pred_mean(row):
return (row["ConversionPred"].sum()/row["volumePred"].sum())
1 号可能更好,因为它使您的函数保持美观和通用。
我有这样一个数据框数据:
Cluster VolumePred ConversionPred
0 0-3 8.0 7.0
1 0-3 175.0 85.0
2 0-3 17 4.0
3 4-6 14 4.0
4 7-9 29.0 19.0
我需要添加一列“meanKPI”,它等于“ConversionPred”的总和除以按“Cluster”分组的“VolumePred”的总和。
我试过这个:
def KPI_Pred_mean(x, y):
#print (x)
return (x.sum()/y.sum())
#data.ConversionPred.sum()/sum_vol_pred
df3=data.groupby(['Cluster'])['ConversionPred', 'VolumePred'].apply(KPI_Pred_mean).reset_index()
但是我得到一个错误:
TypeError: KPI_Pred_mean() missing 1 required positional argument: 'y'
我该如何解决这个问题?
将你的调用apply
自定义功能改为
out = df.groupby(['Cluster']).apply(lambda x : KPI_Pred_mean(x['ConversionPred'],x['VolumePred'])) .reset_index(name = 'KPI_Pred_mean')
Out[267]:
Cluster KPI_Pred_mean
0 0-3 0.480000
1 4-6 0.285714
2 7-9 0.655172
KPI_Pred_mean
需要两个参数,您将函数作为 lambda 传递给 apply
的方式可以重写为:.apply(lambda x: KPI_Pred_mean(x)
。这意味着它缺少 y
变量。您可以通过两种方式重写代码:
1 - 重写 lambda
df3=data.groupby(['Cluster'])['ConversionPred', 'VolumePred'].apply(lambda x: KPI_Pred_mean(x["ConversionPred"], x["volumePred"]).reset_index(name = 'KPI_Pred_mean')
2 - 重写你的函数
def KPI_Pred_mean(row):
return (row["ConversionPred"].sum()/row["volumePred"].sum())
1 号可能更好,因为它使您的函数保持美观和通用。