У меня есть DataFrame:, если отрицательна, то с средневзвешенное
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.
Я пробовал прокручивать ['Total'] < 0, затем ['WAP'] = 0, но это влияет на весь столбец.
В конце концов я ищу колонку WAP, которая гласит: 10, 10,83, 12,6, 12,6, 12,6
У меня есть около недели опыта в Python, но не будет просто «a ['WAP'] = np.maximum.accumulate (a ['Cum Sum Amount']/a ['Total'])' работает для вас? –