基于熊猫变量窗口的加权平均值

时间:2016-04-14 00:59:04

标签: python pandas

我想采取加权平均值"周期"基于" 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

2 个答案:

答案 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天采用相同的方法。