#python #pandas #numpy
#питон #pandas #numpy #python
Вопрос:
Фрейм данных:
Date A B C D
1 10 0 0 0
2 0 25 6 7
3 0 2 5 10
4 0 10 9 7
Я пытаюсь написать функцию, которая вычисляет столбец вычетов, каждый раз, когда Дата = 1, столбец вычетов ==столбец A.
Если дата не равна 1, то Вычет col = Col B Col C- Col D
Конечный результат
Date A B C D Deduction Close
1 10 0 0 0 10 10
2 10 25 6 7 24 34
3 34 2 5 10 -3 31
4 31 10 9 7 12 43
В приведенном ниже коде я использую shift(-1), чтобы получить значение столбца [‘Close’] из предыдущей строки.
Приведенный ниже код должен дать представление о том, как я пытаюсь подойти к проблеме, я не знаю, как я могу ссылаться на столбец в его собственном определении или если есть какой-то обходной путь для этого.
Вопрос удален и отправлен повторно, поскольку мне нужно отправить его через пару часов, предыдущий вопрос был закрыт, поскольку это было неясно, постарался максимально подробно описать в этом.
Final['Deduction']=np.where(Final['Date'] ==1, Final['A'], Final['B'] Final['C']- Final['D'])
Final['Close']=np.where(Final['Date'] ==1, Final['Deduction'],Final['Close'].shift(-1) Final['Deduction'] )
Final
Ответ №1:
Попробуйте cumsum()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.cumsum.html
Final['Deduction']=np.where(Final['Date'] ==1, Final['A'], Final['B'] Final['C']- Final['D'])
Final['Close']=Final['Deduction'].cumsum()
Final