我想采取加权平均值"周期"基于" day"作为窗口。窗口并不总是一样的。如何计算熊猫的加权平均值?
In [3]: data = {'cycle':[34.1, 41, 49.0, 53.9, 35.8, 49.3, 38.6, 51.2, 44.8],
'day':[6,6,6,13,13,20,20,20,20]}
In [4]: df = pd.DataFrame(data, index=np.arange(9), columns = ['cycle', 'day'])
In [5]: df
Out[5]:
cycle day
0 34.1 6
1 41.0 6
2 49.0 6
3 53.9 13
4 35.8 13
5 49.3 20
6 38.6 20
7 51.2 20
8 44.8 20
我希望有三个值(如果我已经正确地完成了这个):
34.1 * 1/3 + 41 * 1/3 + 49 * 1/3 = 41.36
cycle day
41.36 6
6.90 13
45.90 20
答案 0 :(得分:1)
如果我理解正确,我想你只是想:
df.groupby(['day']).mean()
答案 1 :(得分:0)
分组当天,然后应用lambda函数计算组的总和,然后将其除以组内非空值的数量。
>>> df.groupby('day').cycle.apply(lambda group: group.sum() / group.count())
day
6 41.366667
13 44.850000
20 45.975000
Name: cycle, dtype: float64
虽然你说加权平均值,但我不认为有任何权重。它显示为特定日期cycle
值的简单平均值。事实上,一个简单的手段就足够了。
另外,我认为第13天的价值应计算为53.9 * 1/2 + 35.8 * 1/2
,产生44.85。第20天采用相同的方法。