如何检查数据帧的第i行是否等于值?

时间:2019-04-05 22:40:47

标签: python dataframe

我无法解决此问题。

for i in range(0,len(df1.columns)):
    if df1.iloc[i:].values ==1:
        print ('Buy')
        order= True
    elif df1.iloc[i:] == -1:
        print ('Sell')
        order= True
    else:
        print ('Do nothing')
        time.sleep(30)
    if a==5:
        break

我有一个dataframe df1,其中包括值-1、0和1。 所以基本上,如果值1出现在数据帧中,我基本上会尝试打印“购买”(此代码是循环的结尾,在此之前,我每30秒为df设置一个新值) / p>

要恢复:

每30秒为df设置一个新值(已经这样做了) 检查此值是-1,0还是1 每隔30秒钟根据新值打印一次“购买”,“卖出”或“不执行任何操作”,休眠时间,然后为df等设置新值。

当我运行上面的代码时,它给了我ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

2 个答案:

答案 0 :(得分:0)

我认为是因为您试图将一个列表与一个值进行比较,所以收到了此错误消息

您不清楚数据框df1的形状,所以我想在这里尝试更改

if df1.iloc[i:].values ==1:

if df1.iloc[i] ==1:

并更改

elif df1.iloc[i:] == -1:

elif df1.iloc[i] == -1:

答案 1 :(得分:0)

马蒂诺(Hi Martineau)感谢您的回答。

滤波器表示信号为1时为“买入”,信号为-1时为“卖出”,如果信号为0则为“不执行任何操作”。 延迟只是为了捕获信号的变化,最后是strat = filter * lag。

因此,在我的strat列中,我仅持仓一次,并且如果信号停留在同一位置,它将给出0(不执行任何操作)。

我的问题是我想在每个循环“回合”之后检查数据帧的最后一个值是-1,1还是0。看来输出是布尔值。

df1 df1