Python Pandas DataFrame基于多个先前行中的值删除行

时间:2017-09-24 12:03:12

标签: python pandas dataframe delete-row

我有一个数据框,其中日期为索引,一列是进入和退出交易的指令。

中的每一行
'short_entry', 'short_exit', 'long_entry', 'long_exit'.

规则:

1 - 如果您尚未持有空头头寸(short_entry),则无法退出空头(short_exit)头寸。同样对于多头头寸。

2 - 如果之前的short_entry已使用相应的short_exit关闭,则只能输入另一个短posn。同样,长时间进入和退出。

enter image description here

根据规则,前四行将被删除,第一笔交易将在2008-02-28,之后是2008-03-27的short_exit。 df的其余部分将相应更新。

我已经阅读了几乎所有我在pandas docs和在线帮助中找到的内容。有基于上面一行上的值删除行的答案(使用.shift()),或者在.loc()中使用if-statements。但我无法理解如何将所有这些组合在一起以基于多个先前行的值删除行。我可以使用for循环和df.itertuples()轻松完成。

有没有大熊猫pythonic方式这样做?任何帮助和提示将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

您的规则意味着状态机,应该导致标记要删除的行索引。

我不认为熊猫中有一个单一的功能,它会选择这些规则作为争论。