pandasデータフレームを使用していますが、条件に応じて列の「シグナル」を更新したいと思います。
値が「1」または「-1」で次の行の番号が同じである場合に列を反復処理するときに、2番目の「1」または「-1」を0に更新する必要があります。最終的には2つであってはなりません。連続した1または-1。
このコードを試しましたが、変更はありません。
for i in df['signal'].iteritems():
if i == 1 :
while next() == 1:
i=0
elif i == -1:
while next() == -1:
i=0
データを1シフトしたデータフレームに新しい列を作成し、出力用に新しい列を作成できます。行で、元の信号とシフトされた信号が等しい場合、たとえば、2つの連続した1があることを意味します(そして、あなたは2番目の行にいます)。したがって、出力列に0を入力します。それ以外の場合は、元の値をコピーします。
このコードから始めることができます(コメントで提供したデータで機能するようですが、他の例も確認する必要があります):
df = pd.DataFrame([1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0 ])
df['shifted'] = df.shift(1) #add the column with shifted values
df['output'] = df.apply(lambda x: x[0] if x.signal != x.shifted else 0, axis=1)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加