如何识别python数据帧中第一次出现的条件并对其执行计算?

如何识别python数据帧中第一次出现的条件并对其执行计算?,python,python-3.x,pandas,back-testing,Python,Python 3.x,Pandas,Back Testing,我真的很难找到这样的逻辑。我有一个名为Col的数据集,如下所示。我正在使用Python和Pandas 我想设置一个名为“STATUS”的新列。逻辑是 a。当Col==0时,我将购买。但只有当Col==0是数据集中的第一个值或在状态之后卖出时,才会发生这种买入。如果中间没有一个卖出,则不可能有两个买入值 b。当Col花了我一些时间。 依赖于以下属性:从现在起,即使您选择不发送,您可以看到的最后一个订单始终是您做出的最后决定。(否则它将被发送。) df['order']=(df['order']==

我真的很难找到这样的逻辑。我有一个名为Col的数据集,如下所示。我正在使用Python和Pandas

我想设置一个名为“STATUS”的新列。逻辑是

a。当Col==0时,我将购买。但只有当Col==0是数据集中的第一个值或在状态之后卖出时,才会发生这种买入。如果中间没有一个卖出,则不可能有两个买入

b。当Col花了我一些时间。 依赖于以下属性:
从现在起,即使您选择不发送,您可以看到的最后一个订单始终是您做出的最后决定。(否则它将被发送。)


df['order']=(df['order']==0)。astype(int)-(df['order']请发布原始数据帧。我假设您当前拥有的是预期的输出列Col是我拥有的数据列,Status是输出除了您在这里描述的问题之外,我还将在回测算法中处理这些问题(假设你正试图这么做)。因此,我会允许多个买卖,而不允许它们之间进行买卖,并在你的回溯测试逻辑中忽略它们。是的,这是一个回溯测试算法。我尝试过使用多个买卖,但消除它们的唯一方法看起来像字符串串联和使用正则表达式。我想不出任何其他方法
df['order'] = (df['order'] == 0).astype(int) - (df['order'] <= -8).astype(int)
orders_no_filter = df.loc[df['order'] != 0, 'order']
possible = (orders_no_filter != orders_no_filter.shift(1))
df['order'] = df['order'] * possible.reindex(df.index, fill_value=0)