我有下表。我想根据下面的公式计算按每个日期分组的加权平均值。我可以使用一些标准的常规代码来实现这一点,但是假设这些数据是在pandas数据框中,有没有比通过迭代更容易实现的方法呢?
Date ID wt value w_avg
01/01/2012 100 0.50 60 0.791666667
01/01/2012 101 0.75 80
01/01/2012 102 1.00 100
01/02/2012 201 0.50 100 0.722222222
01/02/2012 202 1.00 80
01/01/2012 w_avg = 0.5 * ( 60/ sum(60,80,100)) + .75 * (80/ sum(60,80,100)) + 1.0 * (100/sum(60,80,100))
01/02/2012 w_avg = 0.5 * ( 100/ sum(100,80)) + 1.0 * ( 80/ sum(100,80))
我们首先创建示例pandas数据帧:
然后,按“值”加权并按指数分组的“wt”的平均值为:
或者,也可以定义函数:
我觉得以下是这个问题的一个很好的解决方案:(Pandas DataFrame aggregate function using multiple columns)
我想我可以用两组来做。
首先计算“加权平均数”:
如果将其设置为列,则可以在其上分组:
现在该列的总和是所需的:
或潜在的:
相关问题 更多 >
编程相关推荐