私は、他の列と共に前の値に条件付きである列をパンダに作成しようとしています。Pandas自己条件付き列
import pandas as pd
import numpy as np
a = np.random.standard_normal(100)
A = pd.DataFrame(a)
A['Out'] = 0
A['Out2'] = 0
for t in range(1,A.shape[0]):
if (A[0][t] > 1) & (A['Out'][t-1]==0):
A['Out'][t] = 1
elif (A[0][t] < -1) & (A['Out'][t-1]==0):
A['Out'][t] = -1
elif ((A[0][t] > 0) & (A['Out'][t-1]==-1)) | ((A[0][t] < 0) & (A['Out'][t-1]==1)):
A['Out'][t] = 0
else:
A['Out'][t] = A['Out'][t-1]
A['Out2'] = np.where((A.index== 0),0
,np.where((A[0] > 1) & (A['Out2'].shift()==0), 1
,np.where((A[0] < -1) & (A['Out2'].shift()==0), -1
,np.where(((A[0] > 0) & (A['Out2'].shift()==-1)) | ((A[0] < 0) & (A['Out2'].shift()==1)), 0
,A['Out2'].shift()))))
カラムA [「OUT2は」]ベクトル形式で[「アウト」]をコピーしようとするが、前の値を読み取りません。列A ['Out']はループをコンパイルするのに時間がかかりすぎます。誰かがこの列を作成するためのベクトル化されたより速いアプローチで私を助けることができますか?
を使用した場合と例入力? – asongtoruin