【发布时间】:2019-07-28 12:34:40
【问题描述】:
我想计算一些日常观察的年度加权平均值。因此,我需要首先计算每一天的加权平均值,然后找到一年中所有日子的常规(同等加权)平均值(数据图片和所需输出如下。)
这是我不工作的代码 sn-p:
def ave_annual(s):
return s.groupby(s.index.year).mean()
wav = lambda x: np.average(x['premium'], weights=x.tna)
df.groupby('date').apply(wav).pipe(ave_annual)
第一个聚合(在日期(天)级别)返回所有NaN。
我设法以逐步缓慢的方式计算平均值:
master_2 = (master_1.assign(tna_sum = master_1.groupby('date')
.tna.transform('sum'))[lambda x: x['tna_sum'] > 0 ]
res_premium = master_2.groupby(
'date')['prem_wieghted2'].sum().pipe(ave_annual)
我想知道 (1) 我收到 NaNs 有什么问题,以及 (2) 我如何使用这种方法 (np.average) 来计算两个变量的平均值。
数据:
date ticker premium spread tna
3/4/2013 x -0.69 0.1261 7.2329
3/4/2013 y 0.096 0.296 49.496
3/4/2013 x 0.142 0.4352 167.5251
3/6/2013 x -0.69 0.1261 7.2329
3/6/2013 z 0.096 0.296 49.496
3/6/2013 y 0.084 0.21 110
3/4/2019 x NaN 0.1392 16.431
3/4/2019 y NaN NaN 100.6774
【问题讨论】:
-
如果你需要帮助,你应该建立一个最小的样本数据......
标签: python pandas numpy group-by average