gpt4 book ai didi

python - 如何在Python中的groupby函数中使用带有两个参数的用户定义函数

转载 作者:行者123 更新时间:2023-12-01 09:06:59 29 4
gpt4 key购买 nike

我的数据是这样的:

x1  x2  var1  var2
0 1 1 1
0 0 2 2
0 0 1 3
1 0 3 3

我定义了一个用于计算加权平均值的函数:

def W_M(x,w):
y1=w.div(w.sum())
m=x*y1.div(y1.sum())
m=m.sum()
return(m)

这里我想计算 var1 的 W_M,并在数据按“by”对象分组时使用 var2 作为权重。

by=['x1','x2']
df.groupby(by,as_index=False).agg({var1: lambda x: x.W_M(var1,var2)})

我不知道上面的groupby代码是否正确..但我尝试过。

我想要如下所示的输出:

x1 x2 var1 var2
0 1 1 1
0 0 1 5
1 0 1 3

请任何人帮我解决这个问题。

提前致谢。

最佳答案

谢天谢地,经过这么多的尝试,终于找到了解决方案。下面我提到了生成预期输出的代码。

out=data.groupby(['x1','x2'],as_index=False).apply(lambda x: np.average(x['var1'], 
weights=x['var2']))
bn=pd.DataFrame(out)
bn.reset_index(inplace=True)
bn=bn.rename(columns={0:'var1'})
result = pd.merge(bn,
data[['x1','x2','var2']],
on=['x1','x2'],
how='left')

关于python - 如何在Python中的groupby函数中使用带有两个参数的用户定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966830/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com