2017-01-27 61 views
-2

我想找到下面的加權平均值。沒有cummax的加權平均價格

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] 
+0

「我使用cummax作爲加權平均價格,如果總的減少不能減少。 「 你什麼意思?你是否暗示你的約束之一是,無論WAP的價值是什麼,你都不能低於初始價格?或者是其他東西? – Boud

+0

如果你把['wap']中的第三個數字作爲我想要的數據,你會發現它從10.83減少到10。這是正確的,但cummax會保持在10.83的值。但是,如果不使用cummax,第四個數字也會減少,因爲總數會減少。但是,實際上這並未發生。所以我需要它說如果總減少然後cummax,但是如果總增加然後不cummax – ben121

回答

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() 
+0

除了使用這個作爲總減少加權平均減少。我試圖避免這個 – ben121

+0

對不起,我不確定你的意思。如果銷售額爲負,那麼加權平均數*應該*下降。 – sundance