【发布时间】:2016-09-06 01:59:54
【问题描述】:
我有一个数据框:
a = {'Price': [10, 15, 20, 25, 30], 'Total': [10000, 12000, 15000, 14000, 10000],
'Previous Quarter': [0, 10000, 12000, 15000, 14000]}
a = pd.DataFrame(a)
print (a)
利用这些原始数据,我添加了一些额外的列,包括加权平均价格 (WAP)
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']
这很好,但是随着总数开始减少,这会降低加权平均价格。
我的问题是,如果 Total 减少,我将如何让 WAP 反映上面的行?例如,在第 3 行,Total 为 1000,低于第 2 行。这使 WAP 从 12.6 下降到 11.78,但我希望它说 12.6 而不是 11.78。
我尝试循环遍历 a['Total']
最终,我正在寻找一个 WAP 专栏,内容如下: 10, 10.83, 12.6, 12.6, 12.6
【问题讨论】:
-
我有大约一周的 Python 经验,但是
a['WAP'] = np.maximum.accumulate(a['Cum Sum Amount'] / a['Total'])不适合你吗?