Как перебрать и присвоить значение столбцу в кадре данных, используя метод lambda apply, используя функцию - PullRequest
1 голос
/ 26 марта 2019

Я хочу присвоить значение столбцу в фрейме данных, написав функцию с моим желаемым набором условий, а затем применить ее к столбцу в столбце фрейма данных с помощью метода 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 в зависимости от вычислений функции, но он выбрасывает только нули. Пожалуйста, помогите мне решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...