繁体   English   中英

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

[英]Python Pandas DataFrame delete rows based on values in multiple previous rows

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

'short_entry', 'short_exit', 'long_entry', 'long_exit'.

规则:

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

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

在此处输入图片说明

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

我已经阅读了几乎所有在熊猫文档和在线帮助中都能找到的内容。 有一些答案可以根据上面的单行中的值删除行(使用.shift()),或者使用.loc()中的if语句。 但是我只是无法理解如何将所有这些放在一起以基于多个先前行的值来删除一行。 我可以轻松地使用for循环和df.itertuples()。

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

谢谢

您的规则暗示着一个状态机,这将导致标记要删除的行索引。

我不认为大熊猫有一个功能可以将这些规则当作争论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM