Вы можете сделать это намного эффективнее, используя np.where
и DataFrame.shift
:
import numpy as np
np.where(df['A'].gt(0.95), df['A'].shift(), df['B'].shift())
Проблема с вашим кодом состоит в том, что df.iterrows()
возвращает tuple
, гдеПервый элемент - это индекс, а второй - Series
, поэтому вы не можете напрямую его индексировать.Вот способ, которым вы могли бы сделать это:
df['result'] = np.nan
for ix, row in df.loc[1:,:].iterrows():
if row.loc['A'] > 0.95:
df.loc[ix, 'result'] = df.loc[ix-1,'A']
else:
df.loc[ix, 'result'] = df.loc[ix-1,'B']