没有cummax的加权平均价格

时间:2017-01-27 17:13:36

标签: python pandas numpy

我试图找到下面的加权平均值。

a = {'Price': [10, 15, 5, 25, 30], 'Total': [10000, 12000, 15000, 14000, 0],
     'Previous Quarter': [0, 10000, 12000, 15000, 14000]}
a = pd.DataFrame(a)
print (a)

我正在使用下面的公式来做到这一点

a['Change'] = a['Total'] - a['Previous Quarter']
a['Amount'] = a['Price']*a['Change']
a['Cum Sum Amount'] = np.cumsum(a['Amount'])
a['WAP'] = (a['Cum Sum Amount'] / a['Total']).cummax()

我正在使用cummax,因为如果总减少,加权平均价格不能降低。这很好,但如果总增加但价格下降,加权平均价格应该会下降,但由于cummax它无法做到。

有没有办法可以看到类似下面的内容:

a['Change'] = a['Total'] - a['Previous Quarter']
a['Amount'] = a['Price']*a['Change']
a['Cum Sum Amount'] = np.cumsum(a['Amount'])
a['WAP'] = [10, 10.83, 10.00, 10.00, 0]

1 个答案:

答案 0 :(得分:0)

加权平均价格只是收入/数量。将季度收入和数量分成他们自己的列,然后除去cumsums(这假设行按季度递增排序):

a = {'Price': [10, 15, 5, 25, 30], 'Total': [10000, 12000, 15000, 14000, 0],
     'Previous Quarter': [0, 10000, 12000, 15000, 14000]}
a = pd.DataFrame(a)

a["quarter_volume"] = a["Total"] - a["Previous Quarter"]
a["quarter_revenue"] = a["Price"] * a["quarter_volume"]
a["quarter_revenue"].cumsum() / a["quarter_volume"].cumsum()