Более эффективный метод итерацииPython

Программы на Python
Anonymous
Более эффективный метод итерации

Сообщение Anonymous »

Я ищу лучший способ сделать следующее. Код ниже работает, но очень медленно, поскольку я работаю с большим набором данных. Я также пытался использовать itertools, но почему-то не смог заставить это работать. Итак, вот моя очень непитоническая отправная точка.
Вспомогательная функция:

Код: Выделить всё

def signalbin(x,y):
if x > y:
return 1
else:
return -1
Данные теста:

Код: Выделить всё

np.random.seed(0)
df = pd.DataFrame(
{
'a': np.random.normal(0, 2.5, n),
'b': np.random.normal(0, 2.5, n),
}
)
Мой текущий код:

Код: Выделить всё

df["signal"] = [signalbin(x, y) for x, y in zip(df["a"], df["b"])]
df["signal2"] = df["signal"]
for i, row in df.iterrows():
if i == 0:
continue

if (row['signal2'] != df.at[i-1, "signal"]):
df.at[i, "signal2"] = df.at[i-1, "signal2"]
В данном случае желаемым результатом является столбец signal2.
Поэтому я ищу более эффективную логику итерации, которая позволяет задавать условия для нескольких столбцы и строки

Подробнее здесь: https://stackoverflow.com/questions/787 ... ion-method

Вернуться в «Python»