具有特定条件的 Pandas DataFrame 中的加权平均值

问题描述

我想动态创建一个指数衰减的移动平均线,为最近的测量赋予更多权重。例如,如果我有 5 个请求,而这 5 个请求是过去 4 周的结果,我想使用这 4 周(第 1 行)动态创建指数平均值。尽管如此,如果这 5 个请求是 4 周的结果,但其中一些周出现不止一次,那么我想以某种方式修改指数平均值,以免将重复的周视为单独的周并分配错误的权重。我的测量是以周为单位的。示例数据帧:

id requests day_of_week hour   weeks 
1    5        3       21   [1,2,3,4] 
2    5        3.      22   [2,4]

Expected output:
id requests day_of_week hour   weeks   output   
1    0        3       21   [1,4]   see_function
2    5        3.      22   [2,4]   see_function

I am defining the weighted mean function as follows:
# lambda function to compute the weighted mean:
r = 0.5
a = 1.0
wm = lambda x: np.average(x,weights=[a * r ** i for i in range(len(x))].reverse())

df['output'] = df['weeks'].apply(wm,axis=1)

尽管如此,我做的事情是错误的,因为它每周(重复与否)都完全一样。我试图找到一个聪明的解决方案,可以区分周是否重复,从而不分配虚构的权重。

我发布的加权平均值假设一个恒定的半衰期仅取决于测量的长度,并没有考虑我想要的。假设周的字典是 {2: 2,3:1,4:1},那么我会以某种方式利用出现的频率来调整我的加权平均值,以便比现在更多地关注最近的情况

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)