我想我会用两个groupby来做到这一点。
首先计算“加权平均值”:
In [11]: g = df.groupby('Date')
In [12]: df.value / g.value.transform("sum") * df.wt
Out[12]:
0 0.125000
1 0.250000
2 0.416667
3 0.277778
4 0.444444
dtype: float64
如果将其设置为列,则可以对其进行分组:
In [13]: df['wa'] = df.value / g.value.transform("sum") * df.wt
现在,此列的总和是所需的:
In [14]: g.wa.sum()
Out[14]:
Date
01/01/2012 0.791667
01/02/2012 0.722222
Name: wa, dtype: float64
或潜在地:
In [15]: g.wa.transform("sum")
Out[15]:
0 0.791667
1 0.791667
2 0.791667
3 0.722222
4 0.722222
Name: wa, dtype: float64