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


