我有一個這樣的資料框資料:
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() 缺少 1 個必需的位置引數:'y'
我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
將您的通話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
uj5u.com熱心網友回復:
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 號可能更好,因為它使您的功能保持良好和通用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/415697.html
標籤:
上一篇:如何計算索引和連續列之間的值增加
