我正在try 从DT获取加权平均值,但Apply和AGG似乎都不起作用,并且我的代码返回以下错误‘numpy.flat64’对象不可调用
我有以下DF
df = pd.DataFrame([['RETIRO', 65, 1, 10.7],
['SAN NICOLAS',116, 1, 23.2],
['RETIRO', 101, 2, 28.7],
['FLORES', 136 , 2, 23.5]],
columns=['BARRIO', 'HOGARES', 'COMUNA', 'NSE'])
我定义了函数
def avg_w(dt):
return np.average(a = dt.NSE, weights = dt.HOGARES)
现在将其应用于我的DF,
df.loc[:,['COMUNA','NSE','HOGARES']].groupby(['COMUNA']).apply(avg_w(df))
然后它又回来了 "numpy.flat64"对象不可调用
我改变了功能,
def avg_w2(dt):
return pd.Series({'avg_w2': np.average(a = dt.NSE, weights = dt.HOGARES)})
和应用程序
df.loc[:,['COMUNA','NSE','HOGARES']].groupby(['COMUNA']).apply({'avgw': [avg_w2(dt)]})
但它也没有奏效.代码返回TypeError:unhasable type:‘dict’
该函数单独工作,但当我将其传递给应用程序(或聚合,我try 两者都使用)时,有些东西不工作
我希望获得每个科穆纳的NSE按猪加权的平均值.