繁体   English   中英

使用 Python 中的 groupby 计算加权平均值

[英]Calculate the weighted average using groupby in Python

这是我目前正在研究的 dataframe:

df_weight_0

在此处输入图像描述

我想计算的是 SMB 和 CORP 组的每个 product_basket 中由“tot_SKU”加权的变量“avg_lag”的平均值。 这意味着,以 CORP 为例,我想计算如下:

(585,134 * 46.09 + 147,398 * 104.55 +... + 1,112,941 * 75.73) / (585,134 + 147,398 +... + 1,112,941)

SMB 也需要这样做。

理想情况下,我希望将上面 dataframe 中的这两个数字放在一个新列中(SMB 和 CORP 行将根据如上所示计算的两个值重复其加权平均值)。

PS 我将在我的分析中更深入地了解 go,因此最通用的方法越好。

提前致谢,

斯特凡诺

所以这应该可以解决我认为的问题

import pandas as pd


def calculator(df, columns):
    weighted_sum = (df[columns[0]]*df[columns[1]]).sum()/df[columns[0]].sum()
    return weighted_sum

cols = ['tot_SKU', 'avg_lag']

Sums = df.groupby('SF_type').apply(lambda x: calculator(x, cols))
df.join(Sums.rename(('sums')), on='SF_type')

编辑:添加了与旧 dataframe 的请求合并

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM