0

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

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

一个。当 Col==0 时,我会购买。但是只有当 Col==0 是数据集中的第一个值或Status Sell之后,才会发生这种 Buy 。不能有两个买入值之间没有卖出

湾。当 Col<=-8 我会 卖出。但是,如果在 Satus 列中之前有买入,就会发生这种情况。不能有两个Sells之间没有 Buy 。

我已经提供了我希望输出的示例。非常感谢任何帮助

这里原始数据在列中:我想要的Col和输出处于状态

  +-------+--------+
    |  Col  | Status |
    +-------+--------+
    | 0     | Buy    |
    | -1.41 | 0      |
    | 0     | 0      |
    | -7.37 | 0      |
    | -8.78 | Sell   |
    | -11.6 | 0      |
    | 0     | Buy    |
    | -5    | 0      |
    | -6.1  | 0      |
    | -8    | Sell   |
    | -11   | 0      |
    | 0     | Buy    |
    | 0     | 0      |
    | -9    | Sell   |
    +-------+--------+

4

1 回答 1

0

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

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)
于 2020-03-19T23:24:41.010 回答