如何使用函数使用Apply Lambda方法对数据框中的列进行迭代和赋值

时间:2019-03-26 13:51:55

标签: python pandas function loops dataframe

我想通过编写具有所需条件集的函数将值分配给数据框中的列,然后使用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'的{​​{1}}列分配值。 'dd''buynifty'已经存在,是二进制变量。 square_buynifty'是一个浮动价格,类似于股票的收盘价

我在'Close_x'列中获得的输出在每一行都仅为零,与初始化时相同。根据函数计算,nbuy的值应为nbuy或0,但它仅抛出零。请帮助我解决这个问题。

0 个答案:

没有答案