簡體   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