2017-09-24 11 views
1

私は、日付とインデックスを持つデータフレームと、取引の開始と終了を指示する1つの列を持っています。 - あなたはすでにショートポジション(short_entry)を保持していない場合は、短い(short_exit)の位置を終了することはできませんPython Pandas DataFrameは、複数の前の行の値に基づいて行を削除します。

1:各行は

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

ルールの一つです。長いポジションでも同様です。

2 - 前のshort_entryが対応するshort_exitで閉じられている場合にのみ、別のshort posnを入力できます。同様に、長い入口と出口がある。最初の4つの行が削除されると、最初の取引が入力されたルールに基づいて

enter image description here

は2008-03-27にshort_exit続い2008-02-28になるであろう。残りのdfはそれに応じて更新されます。

私はパンダのドキュメントやオンラインで見つけられるものはすべて読んだことがあります。上記の単一行の値に基づいて行を削除する(.shift()を使用)か、.loc()内のif-statementsを使用する答えがあります。しかし、私は、複数の前の行の値に基づいて行を削除するために、これらをすべて一緒に配置する方法について頭を悩ますことはできません。私はforループとdf.itertuples()を使って簡単に行うことができます。

これを行うためのパンダのpythonic方法はありますか?どんな助けとヒントも非常に高く評価されるでしょう。

おかげ

+1

イメージをテキストとして置き換えると、読みやすくなります。[good-reproducible-pandas](https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-例) –

答えて

0

あなたのルールが行インデックスは削除するマーキングを生じるはずであるステート・マシンを、暗示。

私はパンダに一つの機能があるとは思わないが、これらのルールを引数として選ぶ。

関連する問題