#python #dataframe
#python #фрейм данных
Вопрос:
Мне не удается решить эту проблему.
for i in range(0,len(df1.columns)):
if df1.iloc[i:].values ==1:
print ('Buy')
order= True
elif df1.iloc[i:] == -1:
print ('Sell')
order= True
else:
print ('Do nothing')
time.sleep(30)
if a==5:
break
У меня есть dataframe
df1
, который включает значения -1, 0 и 1.
Итак, в основном я пытаюсь напечатать, например, «купить», если в фрейме данных появляется значение 1 (этот код является концом цикла, до этого я устанавливал каждые 30 секунд новое значение для df
)
Для возобновления:
Устанавливайте новое значение для df каждые 30 секунд (уже делали это), проверяйте, равно ли это значение -1,0 или 1, печатайте каждые 30 секунд «купить», «продать» или «Ничего не делать» в соответствии с новым значением, временем ожидания, а затем устанавливайте новое значение для df
и т.д.
Когда я запускаю приведенный выше код, он выдает мне: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
.
Комментарии:
1. Будет полезно предоставить образец того, как
df1
выглядит.
Ответ №1:
Я думаю, потому что вы пытались сравнить список с одним значением, вы получили это сообщение об ошибке
форма вашего фрейма данных df1 нам не ясна, поэтому я предполагаю, что здесь попробуйте изменить
if df1.iloc[i:].values ==1:
Для
if df1.iloc[i] ==1:
а также изменить
elif df1.iloc[i:] == -1:
Для
elif df1.iloc[i] == -1:
Комментарии:
1. Привет, Махмуд, спасибо за ваш ответ. Я уже пробовал это, он продолжает сообщать мне то же самое ValueError «Значение истинности ряда неоднозначно», может быть, потому, что вывод этого True или False, поэтому тип bool? (df1 — это фрейм данных)
Ответ №2:
Привет, Мартино, спасибо за ваш ответ.
Фильтр означает, что сигнал «купить», если он равен 1, «Продать», если он равен -1, «ничего не делать», если 0. Задержка предназначена только для фиксации изменений в сигнале и, наконец, strat = filter * lag .
Итак, с моими столбцами strat я меняю свою позицию только один раз, и если сигнал останется в той же позиции, он выдаст 0 (ничего не делать).
Моя проблема в том, что я хочу после каждого цикла ’round’ проверять, равно ли последнее значение фрейма данных -1,1 или 0. Кажется, что вывод является значением bool..