2016-12-05 4 views
1

Я пытаюсь понять, как обойти это в python pandas. Моя цель - заполнить столбец «РЕЗУЛЬТАТ» с первоначальными инвестициями и применить прибыль поверх предыдущего результата.Как применить предыдущий результат строки в pandas

Так что, если я хотел бы использовать электронную таблицу первенствовать я хотел бы сделать это:

  1. Спросите, что это initial_investment (в этом примере $ 350)
  2. Compute первый ряд, как прибыль/100 * initial_investment + initial_investment
  3. 2-й и 4-й будут такими же, за исключением того, что «initial_investment» находится в необработанном выше.

enter image description here

мой исходный код питона это

import pandas as pd 
df = pd.DataFrame({"DATE":[2009,2010,2011,2012,2013,2014,2015,2016],"PROFIT":[10,4,5,7,-10,5,-5,3],"RESULT":[350,350,350,350,350,350,350,350]}) 
print df 

ответ

6

Вы можете использовать интегральную функцию продукта cumprod():

df['RESULT'] = ((df.PROFIT + 100)/100.).cumprod() * 350 

Сначала вы превращаете df.PROFIT в пропорции предыдущего стоимость. Затем cumprod() умножает каждую строку на предыдущие строки. Затем вы можете просто умножить это на любое ваше начальное значение.

+0

впечатляет, спасибо !!! – adhg

+0

Нет проблем! Я понимаю, почему это было немного озадачивающе - я сначала подумал, что ответ должен использовать 'shift()' в некотором роде. Благодарим за то, что вы четко сформулировали проблему и поставили желаемый код выпуска и репликации в вопросе. – ASGM

+1

Да, я попытался использовать смену, но не получил нигде. Обычно, когда я никуда не ухожу, я спрашиваю своего лучшего друга stackoverflow – adhg