Использование условий для вычисления значений столбцов

#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