我想通过编写具有所需条件集的函数将值分配给数据框中的列,然后使用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,但它仅抛出零。请帮助我解决这个问题。