Я хочу присвоить значение столбцу в фрейме данных, написав функцию с моим желаемым набором условий, а затем применить ее к столбцу в столбце фрейма данных с помощью метода apply lambda.
Набор данных и ожидаемый фрагмент вывода
index Close_x buynifty square_buynifty nbuy
0 5000 0 0 0
1 5100 0 0 0
2 5300 1 0 5300
3 5101 0 0 5300
4 5009 1 0 5300
5 5201 0 1 5201
6 5400 0 0 0
7 5500 0 1 0
8 5450 0 0 0
9 5388 1 0 5388
10 5402 0 0 5388
11 5499 0 0 5388
12 5610 0 1 5610
13 5701 0 0 0
14 5648 0 0 0
Я попытался создать функцию и присвоить значение с помощью выражения lambda
, но значение не присваивается и не выдает никакой ошибки.
dd['nbuy']=0
def tst(nbuy,buynifty,square_buynifty,Close_x,df):
df=[]
for i in range(0,len(df)):
if buynifty[i]==1 and nbuy[i]==0:
nbuy[i]=Close_x[i]
elif (square_buynifty[i]==0):
nbuy[i+1]=nbuy[i]
elif (square_buynifty[i]==1 and nbuy[i-1]>0):
nbuy[i]=Close_x[i]
nbuy[i+1]=0
elif (square_buynifty[i]==1 and nbuy[i-1]==0):
nbuy[i]=0
nbuy[i+1]=0
return nbuy
dd['nbuy']= dd.apply(lambda row: tst(row['nbuy'],row['buynifty'],row['square_buynifty'],row['Close_x'],dd), axis=1)
Я хочу присвоить значения построчно через функцию, определенную 'tst'
для 'nbuy'
столбца моего существующего кадра данных 'dd'
. 'buynifty'
, square_buynifty'
- это уже существующие столбцы и являются двоичными переменными. 'Close_x'
- это значение с плавающей точкой, аналогичное цене закрытия акции
Вывод, который я получаю в столбце nbuy
, - это только нули в каждой строке, которые совпадают с инициализацией. nbuy
должен принимать значения close_x
или 0 в зависимости от вычислений функции, но он выбрасывает только нули. Пожалуйста, помогите мне решить эту проблему.